From 05acda99f4529ba939488dea2737002dbaf4a891 Mon Sep 17 00:00:00 2001 From: Burak Yavuz Date: Tue, 26 Oct 2021 04:42:08 +0000 Subject: [PATCH 01/74] Translated using Weblate (Turkish) Currently translated at 100.0% (1518 of 1518 strings) --- plinth/locale/tr/LC_MESSAGES/django.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index 691248aec..c740f6477 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-25 18:50-0400\n" -"PO-Revision-Date: 2021-10-13 08:35+0000\n" +"PO-Revision-Date: 2021-10-27 04:42+0000\n" "Last-Translator: Burak Yavuz \n" "Language-Team: Turkish \n" @@ -2078,6 +2078,8 @@ msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" +"Roundcube uygulaması, kullanıcıların " +"e-postaya erişmesi için web arayüzü sağlar." #: plinth/modules/email_server/__init__.py:57 msgid "" @@ -2187,10 +2189,8 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:11 -#, fuzzy -#| msgid "My Aliases" msgid "Manage Aliases" -msgstr "Kod Adlarım" +msgstr "Kod Adlarını Yönet" #: plinth/modules/email_server/templates/email_alias.html:14 msgid "You have no email aliases." @@ -2268,7 +2268,7 @@ msgstr "Giriş dizini oluştur" #: plinth/modules/email_server/templates/my_mail.html:27 msgid "Your home directory is ready to receive emails." -msgstr "" +msgstr "Giriş dizininiz e-postaları almaya hazır." #: plinth/modules/email_server/templates/tls_form.html:10 msgid "Keep current settings" From c02fac6c7aba77fcfc264255548a221a0fa0643f Mon Sep 17 00:00:00 2001 From: Andrij Mizyk Date: Wed, 27 Oct 2021 16:46:47 +0000 Subject: [PATCH 02/74] Translated using Weblate (Ukrainian) Currently translated at 79.5% (1207 of 1518 strings) --- plinth/locale/uk/LC_MESSAGES/django.po | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 7411b6e98..6547354a1 100644 --- a/plinth/locale/uk/LC_MESSAGES/django.po +++ b/plinth/locale/uk/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-25 18:50-0400\n" -"PO-Revision-Date: 2021-10-13 08:35+0000\n" +"PO-Revision-Date: 2021-10-27 17:08+0000\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian \n" @@ -2035,12 +2035,15 @@ msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" +"Застосунок Roundcube надає " +"вебінтерфейс для доступу користувачів до ел. пошти." #: plinth/modules/email_server/__init__.py:57 msgid "" "During installation, any other email servers in the system will be " "uninstalled." msgstr "" +"Під час встановлення всі інші сервери ел. пошти в системі буде видалено." #: plinth/modules/email_server/__init__.py:68 msgid "Email Server" @@ -2143,10 +2146,8 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:11 -#, fuzzy -#| msgid "My Aliases" msgid "Manage Aliases" -msgstr "Мої аліяси" +msgstr "Керування аліясами" #: plinth/modules/email_server/templates/email_alias.html:14 msgid "You have no email aliases." @@ -2224,7 +2225,7 @@ msgstr "Створити домашній каталог" #: plinth/modules/email_server/templates/my_mail.html:27 msgid "Your home directory is ready to receive emails." -msgstr "" +msgstr "Ваш домашній каталог готовий до отримання ел. пошти." #: plinth/modules/email_server/templates/tls_form.html:10 msgid "Keep current settings" From d57dd8301c6092782f05d854120b8f8f1b8b7849 Mon Sep 17 00:00:00 2001 From: Michael Breidenbach Date: Thu, 28 Oct 2021 02:57:59 +0000 Subject: [PATCH 03/74] Translated using Weblate (Swedish) Currently translated at 99.9% (1517 of 1518 strings) --- plinth/locale/sv/LC_MESSAGES/django.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index e533de027..53e643be4 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-25 18:50-0400\n" -"PO-Revision-Date: 2021-09-21 20:38+0000\n" +"PO-Revision-Date: 2021-10-29 03:43+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish \n" @@ -2076,12 +2076,14 @@ msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" +"Roundcube app ger användarna " +"webbgränssnitt för att komma åt e-post." #: plinth/modules/email_server/__init__.py:57 msgid "" "During installation, any other email servers in the system will be " "uninstalled." -msgstr "" +msgstr "Under installationen avinstalleras alla andra e-postservrar i systemet." #: plinth/modules/email_server/__init__.py:68 msgid "Email Server" @@ -2184,10 +2186,8 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:11 -#, fuzzy -#| msgid "My Aliases" msgid "Manage Aliases" -msgstr "Mina alias" +msgstr "Hantera alias" #: plinth/modules/email_server/templates/email_alias.html:14 msgid "You have no email aliases." @@ -2265,7 +2265,7 @@ msgstr "Skapa arbetskatalog" #: plinth/modules/email_server/templates/my_mail.html:27 msgid "Your home directory is ready to receive emails." -msgstr "" +msgstr "Din hemkatalog är redo att ta emot e-post." #: plinth/modules/email_server/templates/tls_form.html:10 msgid "Keep current settings" From af5306466094da339ae88f0a02c172b9345ae4b6 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 29 Oct 2021 18:10:26 +0530 Subject: [PATCH 04/74] utils: Fix ruamel.yaml deprecation warnings Fixes #2143 Signed-off-by: Joseph Nuthalapati [sunil: Convert the class property to instance property for added safety] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/tests/test_utils.py | 13 +++++++++---- plinth/utils.py | 7 +++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/plinth/tests/test_utils.py b/plinth/tests/test_utils.py index b651cf3aa..2e9e885fa 100644 --- a/plinth/tests/test_utils.py +++ b/plinth/tests/test_utils.py @@ -8,6 +8,7 @@ from unittest.mock import MagicMock, Mock import pytest import ruamel.yaml +from ruamel.yaml.compat import StringIO from django.test.client import RequestFactory from plinth.utils import YAMLFile, is_user_admin, is_valid_user_name @@ -90,6 +91,9 @@ class TestYAMLFileUtil: kv_pair = {'key': 'value'} + yaml = ruamel.yaml.YAML() + yaml.preserve_quotes = True + def test_update_empty_yaml_file(self): """ Update an empty YAML file with content. @@ -102,7 +106,9 @@ class TestYAMLFileUtil: file_conf[key] = conf[key] with open(test_file.name, 'r') as retrieved_conf: - assert retrieved_conf.read() == ruamel.yaml.round_trip_dump(conf) + buffer = StringIO() + self.yaml.dump(conf, buffer) + assert retrieved_conf.read() == buffer.getvalue() def test_update_non_empty_yaml_file(self): """ @@ -111,14 +117,13 @@ class TestYAMLFileUtil: test_file = tempfile.NamedTemporaryFile() with open(test_file.name, 'w') as conf_file: - conf_file.write( - ruamel.yaml.round_trip_dump({'property1': self.kv_pair})) + self.yaml.dump({'property1': self.kv_pair}, conf_file) with YAMLFile(test_file.name) as file_conf: file_conf['property2'] = self.kv_pair with open(test_file.name, 'r') as retrieved_conf: - file_conf = ruamel.yaml.round_trip_load(retrieved_conf) + file_conf = self.yaml.load(retrieved_conf) assert file_conf == { 'property1': self.kv_pair, 'property2': self.kv_pair diff --git a/plinth/utils.py b/plinth/utils.py index 5281e2e3c..948a484a6 100644 --- a/plinth/utils.py +++ b/plinth/utils.py @@ -102,10 +102,13 @@ class YAMLFile(object): self.yaml_file = yaml_file self.conf = None + self.yaml = ruamel.yaml.YAML() + self.yaml.preserve_quotes = True + def __enter__(self): with open(self.yaml_file, 'r') as intro_conf: if not self.is_file_empty(): - self.conf = ruamel.yaml.round_trip_load(intro_conf) + self.conf = self.yaml.load(intro_conf) else: self.conf = {} @@ -114,7 +117,7 @@ class YAMLFile(object): def __exit__(self, type_, value, traceback): if not traceback: with open(self.yaml_file, 'w') as intro_conf: - ruamel.yaml.round_trip_dump(self.conf, intro_conf) + self.yaml.dump(self.conf, intro_conf) def is_file_empty(self): return os.stat(self.yaml_file).st_size == 0 From 910714d435cc714115e4f8b729d6fb30e341e1c1 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 12 Oct 2021 11:14:18 -0700 Subject: [PATCH 05/74] email_server: Refactor the home directory page - Add a header to the page. - Move message outside the form. - Remove warning and strong emphasis. Since this is only content in the page. - Derive from regular base. - Drop unnecessary reference to bootstrap forms. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../email_server/templates/my_mail.html | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/plinth/modules/email_server/templates/my_mail.html b/plinth/modules/email_server/templates/my_mail.html index aab62ad3a..cb02e7702 100644 --- a/plinth/modules/email_server/templates/my_mail.html +++ b/plinth/modules/email_server/templates/my_mail.html @@ -1,27 +1,25 @@ {# SPDX-License-Identifier: AGPL-3.0-or-later #} -{% extends "email_form_base.html" %} +{% extends "base.html" %} -{% load bootstrap %} {% load i18n %} {% block content %} - {{ block.super }} +

Setup My Home

{% if not has_homedir %} +

+ {% trans "You do not have a home directory." %} + + {% trans "Create one to begin receiving emails." %} + +

+
- + {% csrf_token %} +
{% else %}

{% trans "Your home directory is ready to receive emails." %}

From b7445e659b59edef568abc578dec5b14d755a4b5 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 12 Oct 2021 11:16:28 -0700 Subject: [PATCH 06/74] email_server: Add button for setting up home directory Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/templates/email_server.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index d4eab825f..479fa18ba 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -8,6 +8,13 @@ {{ block.super }} {% endblock %} +{% block subsubmenu %} + + {% trans "Setup My Home" %} + +{% endblock %} + {% block extra_content %}

From 8ac0751f5b15ee39625bf0748590a3fed009fd83 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 12 Oct 2021 11:17:28 -0700 Subject: [PATCH 07/74] email_server: Turn home view into a simple page rather than a tab Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/views.py | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 66bb98b3d..787647ab7 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -18,18 +18,10 @@ from . import aliases, audit, forms class TabMixin(View): - admin_tabs = [ - ('', _('Home')), - ('my_mail', _('My Mail')), - ('my_aliases', _('My Aliases')), - ('security', _('Security')), - ('domains', _('Domains')) - ] + admin_tabs = [('', _('Home')), ('my_aliases', _('My Aliases')), + ('security', _('Security')), ('domains', _('Domains'))] - user_tabs = [ - ('my_mail', _('Home')), - ('my_aliases', _('My Aliases')) - ] + user_tabs = [('my_aliases', _('My Aliases'))] def get_context_data(self, *args, **kwargs): # Retrieve context data from the next method in the MRO @@ -137,29 +129,24 @@ class EmailServerView(TabMixin, AppView): plinth.actions.superuser_run('service', ['reload', service]) -class MyMailView(TabMixin, TemplateView): +class MyMailView(TemplateView): template_name = 'my_mail.html' def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) - nam = self.request.user.username context['has_homedir'] = audit.home.exists_nam(nam) - return context def post(self, request): - return self.catch_exceptions(self._post, request) - - def _post(self, request): - if 'btn_mkhome' not in request.POST: - raise ValidationError('Bad post data') audit.home.put_nam(request.user.username) return self.render_to_response(self.get_context_data()) class AliasView(TabMixin, TemplateView): + class Checkboxes: + def __init__(self, post=None, initial=None): self.models = initial self.post = post From b20d5a96c3b3c78bc1ae2060aad56e3dee62775d Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 12 Oct 2021 11:42:23 -0700 Subject: [PATCH 08/74] email_server: Add button for managing aliases Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/templates/email_server.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index 479fa18ba..7277051e2 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -13,6 +13,10 @@ href="{% url 'email_server:my_mail' %}"> {% trans "Setup My Home" %} + + {% trans "Manage Aliases" %} + {% endblock %} {% block extra_content %} From 9c7c39e61d1f4414e95d06d568e6f977c5ec7f4a Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 12 Oct 2021 15:00:14 -0700 Subject: [PATCH 09/74] email_server: Remove aliases view from tabs list Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/views.py | 51 +++++++++++++--------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 787647ab7..1b7afb81f 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -18,10 +18,8 @@ from . import aliases, audit, forms class TabMixin(View): - admin_tabs = [('', _('Home')), ('my_aliases', _('My Aliases')), - ('security', _('Security')), ('domains', _('Domains'))] - - user_tabs = [('my_aliases', _('My Aliases'))] + admin_tabs = [('', _('Home')), ('security', _('Security')), + ('domains', _('Domains'))] def get_context_data(self, *args, **kwargs): # Retrieve context data from the next method in the MRO @@ -33,8 +31,8 @@ class TabMixin(View): def render_dynamic_tabs(self): if plinth.utils.is_user_admin(self.request): return render_tabs(self.request.path, self.admin_tabs) - else: - return render_tabs(self.request.path, self.user_tabs) + + return '' def render_validation_error(self, validation_error, status=400): context = self.get_context_data() @@ -54,22 +52,6 @@ class TabMixin(View): except Exception as error: return self.render_exception(error) - def find_button(self, post): - key_filter = (k for k in post.keys() if k.startswith('btn_')) - lst = list(itertools.islice(key_filter, 2)) - if len(lst) != 1: - raise ValidationError('Bad post data') - if not isinstance(lst[0], str): - raise ValidationError('Bad post data') - return lst[0][len('btn_'):] - - def find_form(self, post): - form_name = post.get('form') - for cls in self.form_classes: - if cls.__name__ == form_name: - return cls(post) - raise ValidationError('Form was unspecified') - class EmailServerView(TabMixin, AppView): """Server configuration page""" @@ -143,7 +125,7 @@ class MyMailView(TemplateView): return self.render_to_response(self.get_context_data()) -class AliasView(TabMixin, TemplateView): +class AliasView(TemplateView): class Checkboxes: @@ -219,12 +201,25 @@ class AliasView(TabMixin, TemplateView): context['no_alias'] = True return context - def post(self, request): - return self.catch_exceptions(self._post, request) + def _find_form(self, post): + form_name = post.get('form') + for cls in self.form_classes: + if cls.__name__ == form_name: + return cls(post) + raise ValidationError('Form was unspecified') - def _post(self, request): - form = self.find_form(request.POST) - button = self.find_button(request.POST) + def _find_button(self, post): + key_filter = (k for k in post.keys() if k.startswith('btn_')) + lst = list(itertools.islice(key_filter, 2)) + if len(lst) != 1: + raise ValidationError('Bad post data') + if not isinstance(lst[0], str): + raise ValidationError('Bad post data') + return lst[0][len('btn_'):] + + def post(self, request): + form = self._find_form(request.POST) + button = self._find_button(request.POST) if not form.is_valid(): raise ValidationError('Form invalid') From 54b9a93400d860b9af3bb1d07eafb10f45394913 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 12 Oct 2021 15:00:52 -0700 Subject: [PATCH 10/74] email_server: Add heading for manage aliases page Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/templates/email_alias.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plinth/modules/email_server/templates/email_alias.html b/plinth/modules/email_server/templates/email_alias.html index 5dd0ff643..669e8124d 100644 --- a/plinth/modules/email_server/templates/email_alias.html +++ b/plinth/modules/email_server/templates/email_alias.html @@ -1,5 +1,5 @@ {# SPDX-License-Identifier: AGPL-3.0-or-later #} -{% extends "email_form_base.html" %} +{% extends "base.html" %} {% load bootstrap %} {% load i18n %} From b0d3bdb1708f3546145a92ea486db297118e36b3 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 13 Oct 2021 12:19:20 -0700 Subject: [PATCH 11/74] email_server: Reduce the size of headings for aliases/homedir pages Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/templates/email_alias.html | 2 +- plinth/modules/email_server/templates/my_mail.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plinth/modules/email_server/templates/email_alias.html b/plinth/modules/email_server/templates/email_alias.html index 669e8124d..0923cf9c3 100644 --- a/plinth/modules/email_server/templates/email_alias.html +++ b/plinth/modules/email_server/templates/email_alias.html @@ -8,7 +8,7 @@ {{ block.super }} -

{% trans 'Manage Aliases' %}

+

{% trans 'Manage Aliases' %}

{% if no_alias %}

{% trans "You have no email aliases." %}

diff --git a/plinth/modules/email_server/templates/my_mail.html b/plinth/modules/email_server/templates/my_mail.html index cb02e7702..c5e614fce 100644 --- a/plinth/modules/email_server/templates/my_mail.html +++ b/plinth/modules/email_server/templates/my_mail.html @@ -5,7 +5,7 @@ {% block content %} -

Setup My Home

+

Setup My Home {% if not has_homedir %}

From b0e460b433fbbaf4ae5874d2d1bf0155c0f8535e Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 13 Oct 2021 16:26:43 -0700 Subject: [PATCH 12/74] email_server: aliases: Add method for checking of an alias is taken Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/aliases/__init__.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plinth/modules/email_server/aliases/__init__.py b/plinth/modules/email_server/aliases/__init__.py index fb391945b..7f3d4e8c8 100644 --- a/plinth/modules/email_server/aliases/__init__.py +++ b/plinth/modules/email_server/aliases/__init__.py @@ -55,6 +55,20 @@ def get(uid_number): return result +def exists(email_name): + """Return whether alias is already taken.""" + try: + pwd.getpwnam(email_name) + return True + except KeyError: + pass + + with db_cursor() as cur: + query = 'SELECT COUNT(*) FROM Alias WHERE email_name=?' + cur.execute(query, (email_name, )) + return cur.fetchone()[0] != 0 + + def put(uid_number, email_name): s = """INSERT INTO Alias(email_name, uid_number, status) SELECT ?,?,? WHERE NOT EXISTS( From f5d1cb474fd79a7142ba47ec0bfa659fb6122051 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 13 Oct 2021 16:28:14 -0700 Subject: [PATCH 13/74] email_server: aliases: Using Django forms instead of custom forms Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/forms.py | 55 ++++- .../email_server/templates/email_alias.html | 14 +- plinth/modules/email_server/views.py | 194 +++++++----------- 3 files changed, 134 insertions(+), 129 deletions(-) diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index 2108b91fb..1351aba0d 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -1,7 +1,14 @@ # SPDX-License-Identifier: AGPL-3.0-or-later +""" +Forms for the email app. +""" + from django import forms +from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ +from . import aliases as aliases_module + class EmailServerForm(forms.Form): domain = forms.CharField(label=_('domain'), max_length=256) @@ -10,6 +17,48 @@ class EmailServerForm(forms.Form): super().__init__(*args, **kwargs) -class AliasCreationForm(forms.Form): - email_name = forms.CharField(label=_('New alias (without @domain)'), - max_length=50) +class AliasCreateForm(forms.Form): + """Form to create a new alias.""" + alias = forms.CharField(label=_('New alias (without @domain)'), + max_length=50) + + def clean_alias(self): + """Return the checked value for alias.""" + value = self.data['alias'] + if aliases_module.exists(value): + raise ValidationError('Alias is already taken') + + return value + + +class AliasListForm(forms.Form): + """Form to list/enable/disable/delete current aliases.""" + aliases = forms.MultipleChoiceField(label=_('Aliases'), + widget=forms.CheckboxSelectMultiple) + + def __init__(self, aliases, *args, **kwargs): + """Populate the choices for aliases.""" + super().__init__(*args, **kwargs) + enabled_aliases = [(alias.email_name, alias.email_name) + for alias in aliases if alias.enabled] + disabled_aliases = [(alias.email_name, alias.email_name) + for alias in aliases if not alias.enabled] + choices = [] + if enabled_aliases: + choices.append((_('Enabled'), enabled_aliases)) + + if disabled_aliases: + choices.append((_('Disabled'), disabled_aliases)) + + self.fields['aliases'].choices = choices + + def clean(self): + """Add the pressed button to cleaned data.""" + cleaned_data = super().clean() + buttons = [key[4:] for key in self.data if key.startswith('btn_')] + if len(buttons) != 1 or buttons[0] not in ('enable', 'disable', + 'delete'): + raise ValidationError('Invalid button pressed') + + cleaned_data['action'] = buttons[0] + return cleaned_data diff --git a/plinth/modules/email_server/templates/email_alias.html b/plinth/modules/email_server/templates/email_alias.html index 0923cf9c3..7cbed7efd 100644 --- a/plinth/modules/email_server/templates/email_alias.html +++ b/plinth/modules/email_server/templates/email_alias.html @@ -15,16 +15,13 @@ {% else %}

{% csrf_token %} - {{ alias_boxes|safe }} - - + {{ list_form|bootstrap }} + - -
@@ -34,10 +31,9 @@
{% csrf_token %} - {{ form|bootstrap }} - - + {{ create_form|bootstrap }} + +
{% endblock %} diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 1b7afb81f..0d47b18f9 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -1,20 +1,23 @@ # SPDX-License-Identifier: AGPL-3.0-or-later -import io -import itertools +""" +Views for the email app. +""" import pwd from django.core.exceptions import ValidationError from django.http import HttpResponseBadRequest from django.shortcuts import redirect -from django.utils.html import escape +from django.urls import reverse_lazy from django.utils.translation import gettext_lazy as _ from django.views.generic.base import TemplateView, View +from django.views.generic.edit import FormView import plinth.actions import plinth.utils from plinth.views import AppView, render_tabs -from . import aliases, audit, forms +from . import aliases as aliases_module +from . import audit, forms class TabMixin(View): @@ -125,131 +128,88 @@ class MyMailView(TemplateView): return self.render_to_response(self.get_context_data()) -class AliasView(TemplateView): - - class Checkboxes: - - def __init__(self, post=None, initial=None): - self.models = initial - self.post = post - self.cleaned_data = {} - # HTML rendering - self.sb = io.StringIO() - self.counter = 0 - - def render(self): - if self.models is None: - raise RuntimeError('Uninitialized form') - if self.sb.tell() > 0: - raise RuntimeError('render has been called') - - enabled = [a.email_name for a in self.models if a.enabled] - disabled = [a.email_name for a in self.models if not a.enabled] - - self._render_fieldset(enabled, _('Enabled aliases')) - self._render_fieldset(disabled, _('Disabled aliases')) - - return self.sb.getvalue() - - def _render_fieldset(self, email_names, legend): - if len(email_names) > 0: - self.sb.write('
') - self.sb.write('%s' % escape(legend)) - self._render_boxes(email_names) - self.sb.write('
') - - def _render_boxes(self, email_names): - for email_name in email_names: - input_id = 'cb_alias_%d' % self._count() - value = escape(email_name) - self.sb.write('
') - - self.sb.write('' % (input_id, value)) - - self.sb.write('' % (input_id, value)) - - self.sb.write('
') - - def _count(self): - self.counter += 1 - return self.counter - - def is_valid(self): - lst = list(filter(None, self.post.getlist('alias'))) - if not lst: - return False - else: - self.cleaned_data['alias'] = lst - return True +class AliasView(FormView): + """View to create, list, enable, disable and delete aliases. + This view has two forms. Form to list (and manage) existing aliases, and a + form to create a new aliases. When GET operation is used, both forms + created and template is rendered. When POST operation is used, the form + posted is detected using hidden form values and the appropriate form is + initialized for the FormView base class to work with. + """ template_name = 'email_alias.html' - form_classes = (forms.AliasCreationForm, Checkboxes) + form_classes = (forms.AliasCreateForm, forms.AliasListForm) + success_url = reverse_lazy('email_server:aliases') + + def __init__(self, *args, **kwargs): + """Initialize the view.""" + super().__init__(*args, **kwargs) + self.posted_form = None + + def get_form_class(self): + """Return form class to build.""" + if self.posted_form == 'create': + return forms.AliasCreateForm + + return forms.AliasListForm + + def get_form_kwargs(self): + """Send aliases to list form.""" + kwargs = super().get_form_kwargs() + if self.posted_form != 'create': + kwargs['aliases'] = self._get_current_aliases() + + return kwargs + + def _get_uid(self): + """Return the UID of the user that made the request.""" + return pwd.getpwnam(self.request.user.username).pw_uid + + def _get_current_aliases(self): + """Return current list of aliases.""" + return aliases_module.get(self._get_uid()) def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) - context['form'] = forms.AliasCreationForm() - - uid = pwd.getpwnam(self.request.user.username).pw_uid - models = aliases.get(uid) - if len(models) > 0: - form = AliasView.Checkboxes(initial=models) - context['alias_boxes'] = form.render() + if isinstance(context['form'], forms.AliasCreateForm): + context['create_form'] = context['form'] + aliases = self._get_current_aliases() + context['list_form'] = forms.AliasListForm(aliases) else: - context['no_alias'] = True + context['create_form'] = forms.AliasCreateForm() + context['list_form'] = context['form'] + return context - def _find_form(self, post): - form_name = post.get('form') - for cls in self.form_classes: - if cls.__name__ == form_name: - return cls(post) - raise ValidationError('Form was unspecified') + def post(self, request, *args, **kwargs): + """Find which form was submitted before proceeding.""" + self.posted_form = request.POST.get('form') + return super().post(request, *args, **kwargs) - def _find_button(self, post): - key_filter = (k for k in post.keys() if k.startswith('btn_')) - lst = list(itertools.islice(key_filter, 2)) - if len(lst) != 1: - raise ValidationError('Bad post data') - if not isinstance(lst[0], str): - raise ValidationError('Bad post data') - return lst[0][len('btn_'):] + def form_valid(self, form): + """Handle a valid submission.""" + if isinstance(form, forms.AliasListForm): + self._list_form_valid(form) + elif isinstance(form, forms.AliasCreateForm): + self._create_form_valid(form) - def post(self, request): - form = self._find_form(request.POST) - button = self._find_button(request.POST) - if not form.is_valid(): - raise ValidationError('Form invalid') + return super().form_valid(form) - if isinstance(form, AliasView.Checkboxes): - if button not in ('delete', 'disable', 'enable'): - raise ValidationError('Bad button') - return self.alias_operation_form_valid(form, button) + def _list_form_valid(self, form): + """Handle a valid alias list form operation.""" + alias_list = form.cleaned_data['aliases'] + action = form.cleaned_data['action'] + uid = self._get_uid() + if action == 'delete': + aliases_module.delete(uid, alias_list) + elif action == 'disable': + aliases_module.set_disabled(uid, alias_list) + elif action == 'enable': + aliases_module.set_enabled(uid, alias_list) - if isinstance(form, forms.AliasCreationForm): - if button != 'add': - raise ValidationError('Bad button') - return self.alias_creation_form_valid(form, button) - - raise RuntimeError('Unknown form') - - def alias_operation_form_valid(self, form, button): - uid = pwd.getpwnam(self.request.user.username).pw_uid - alias_list = form.cleaned_data['alias'] - if button == 'delete': - aliases.delete(uid, alias_list) - elif button == 'disable': - aliases.set_disabled(uid, alias_list) - elif button == 'enable': - aliases.set_enabled(uid, alias_list) - return self.render_to_response(self.get_context_data()) - - def alias_creation_form_valid(self, form, button): - uid = pwd.getpwnam(self.request.user.username).pw_uid - aliases.put(uid, form.cleaned_data['email_name']) - return self.render_to_response(self.get_context_data()) + def _create_form_valid(self, form): + """Handle a valid create alias form operation.""" + aliases_module.put(self._get_uid(), form.cleaned_data['alias']) class TLSView(TabMixin, TemplateView): From 19d45514dedff33b7df8de33b84d84c0833159e3 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 13 Oct 2021 16:54:03 -0700 Subject: [PATCH 14/74] email_server: aliases: Drop validation already done by form Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/aliases/__init__.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/plinth/modules/email_server/aliases/__init__.py b/plinth/modules/email_server/aliases/__init__.py index 7f3d4e8c8..6592199a0 100644 --- a/plinth/modules/email_server/aliases/__init__.py +++ b/plinth/modules/email_server/aliases/__init__.py @@ -8,9 +8,6 @@ import os import pwd import sqlite3 -from django.core.exceptions import ValidationError -from django.utils.translation import gettext_lazy as _ - from plinth.modules.email_server import lock from . import models @@ -75,17 +72,8 @@ def put(uid_number, email_name): SELECT 1 FROM Alias WHERE email_name=? )""" email_name = models.sanitize_email_name(email_name) - # email_name cannot be the same as a user name - try: - pwd.getpwnam(email_name) - raise ValidationError(_('The alias was taken')) - except KeyError: - pass - with db_cursor() as cur: cur.execute(s, (email_name, uid_number, 1, email_name)) - if cur.rowcount == 0: - raise ValidationError(_('The alias was taken')) schedule_hash_update() From 6e236a41a8e14a2b350adcfc9d6265c4a95a9e0a Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 13 Oct 2021 16:58:20 -0700 Subject: [PATCH 15/74] email_server: aliases: Move sanitizing to form Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/forms.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index 1351aba0d..7acc0a6fe 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -2,6 +2,7 @@ """ Forms for the email app. """ +import re from django import forms from django.core.exceptions import ValidationError @@ -20,11 +21,20 @@ class EmailServerForm(forms.Form): class AliasCreateForm(forms.Form): """Form to create a new alias.""" alias = forms.CharField(label=_('New alias (without @domain)'), - max_length=50) + min_length=2, max_length=50) def clean_alias(self): """Return the checked value for alias.""" - value = self.data['alias'] + value = self.data['alias'].strip().lower() + if not re.match('^[a-z0-9-_\\.]+$', value): + raise ValidationError(_('Contains illegal characters')) + + if not re.match('^[a-z0-9].*[a-z0-9]$', value): + raise ValidationError(_('Must start and end with a-z or 0-9')) + + if re.match('^[0-9]+$', value): + raise ValidationError(_('Cannot be a number')) + if aliases_module.exists(value): raise ValidationError('Alias is already taken') From c89a7fdb9d7cd0f3ba6748a519d433510daab740 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 13 Oct 2021 16:55:36 -0700 Subject: [PATCH 16/74] email_server: aliases: Drop unnecessary sanitizing - In the list form, the values are already sanitized as they are retrieved from the database. Don't refuse to manage existing aliases that don't fit the format. - In the create form, the form already sanitizes as necessary. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/aliases/__init__.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/plinth/modules/email_server/aliases/__init__.py b/plinth/modules/email_server/aliases/__init__.py index 6592199a0..d12d70946 100644 --- a/plinth/modules/email_server/aliases/__init__.py +++ b/plinth/modules/email_server/aliases/__init__.py @@ -71,7 +71,6 @@ def put(uid_number, email_name): SELECT ?,?,? WHERE NOT EXISTS( SELECT 1 FROM Alias WHERE email_name=? )""" - email_name = models.sanitize_email_name(email_name) with db_cursor() as cur: cur.execute(s, (email_name, uid_number, 1, email_name)) @@ -80,9 +79,6 @@ def put(uid_number, email_name): def delete(uid_number, alias_list): s = 'DELETE FROM Alias WHERE uid_number=? AND email_name=?' - for i in range(len(alias_list)): - alias_list[i] = models.sanitize_email_name(alias_list[i]) - parameter_seq = ((uid_number, a) for a in alias_list) with db_cursor() as cur: cur.execute('BEGIN') @@ -101,9 +97,6 @@ def set_disabled(uid_number, alias_list): def _set_status(uid_number, alias_list, status): s = 'UPDATE Alias SET status=? WHERE uid_number=? AND email_name=?' - for i in range(len(alias_list)): - alias_list[i] = models.sanitize_email_name(alias_list[i]) - parameter_seq = ((status, uid_number, a) for a in alias_list) with db_cursor() as cur: cur.execute('BEGIN') From 3e7037d0ea6b724c4ee8b64c066cf13da0a8c254 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 13 Oct 2021 17:00:31 -0700 Subject: [PATCH 17/74] email_server: aliases: Drop unused sanitizing method Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/aliases/models.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/plinth/modules/email_server/aliases/models.py b/plinth/modules/email_server/aliases/models.py index 2f307498f..18d22f906 100644 --- a/plinth/modules/email_server/aliases/models.py +++ b/plinth/modules/email_server/aliases/models.py @@ -1,25 +1,8 @@ -import re from dataclasses import InitVar, dataclass, field -from django.core.exceptions import ValidationError -from django.utils.translation import gettext_lazy as _ - email_positive_pattern = re.compile('^[a-zA-Z0-9-_\\.]+') -def sanitize_email_name(email_name): - email_name = email_name.strip().lower() - if len(email_name) < 2: - raise ValidationError(_('Must be at least 2 characters long')) - if not re.match('^[a-z0-9-_\\.]+$', email_name): - raise ValidationError(_('Contains illegal characters')) - if not re.match('^[a-z0-9].*[a-z0-9]$', email_name): - raise ValidationError(_('Must start and end with a-z or 0-9')) - if re.match('^[0-9]+$', email_name): - raise ValidationError(_('Cannot be a number')) - return email_name - - @dataclass class Alias: uid_number: int From c742d18f3cb5a3fecba29df50383b0da566330d8 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 13 Oct 2021 17:01:12 -0700 Subject: [PATCH 18/74] email_server: aliases: Drop unused regex Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/aliases/models.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plinth/modules/email_server/aliases/models.py b/plinth/modules/email_server/aliases/models.py index 18d22f906..a38d33e4e 100644 --- a/plinth/modules/email_server/aliases/models.py +++ b/plinth/modules/email_server/aliases/models.py @@ -1,7 +1,5 @@ from dataclasses import InitVar, dataclass, field -email_positive_pattern = re.compile('^[a-zA-Z0-9-_\\.]+') - @dataclass class Alias: From 91f18a0e52dea359f3dc1d8e0c3dbae2a1406547 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 14 Oct 2021 17:47:34 -0700 Subject: [PATCH 19/74] email_server: yapf formatting Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/audit/ldap.py | 39 +++++++++++++---------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/plinth/modules/email_server/audit/ldap.py b/plinth/modules/email_server/audit/ldap.py index 89ea6f0b0..570adedd6 100644 --- a/plinth/modules/email_server/audit/ldap.py +++ b/plinth/modules/email_server/audit/ldap.py @@ -13,21 +13,27 @@ from plinth import actions from . import models default_config = { - 'smtpd_sasl_auth_enable': 'yes', - 'smtpd_sasl_type': 'dovecot', - 'smtpd_sasl_path': 'private/auth', - 'mailbox_transport': 'lmtp:unix:private/dovecot-lmtp', - 'virtual_transport': 'lmtp:unix:private/dovecot-lmtp', - - 'smtpd_relay_restrictions': ','.join([ - 'permit_sasl_authenticated', 'defer_unauth_destination', - ]) + 'smtpd_sasl_auth_enable': + 'yes', + 'smtpd_sasl_type': + 'dovecot', + 'smtpd_sasl_path': + 'private/auth', + 'mailbox_transport': + 'lmtp:unix:private/dovecot-lmtp', + 'virtual_transport': + 'lmtp:unix:private/dovecot-lmtp', + 'smtpd_relay_restrictions': + ','.join([ + 'permit_sasl_authenticated', + 'defer_unauth_destination', + ]) } -submission_flags = postconf.ServiceFlags( - service='submission', type='inet', private='n', unpriv='-', chroot='y', - wakeup='-', maxproc='-', command_args='smtpd' -) +submission_flags = postconf.ServiceFlags(service='submission', type='inet', + private='n', unpriv='-', chroot='y', + wakeup='-', maxproc='-', + command_args='smtpd') default_submission_options = { 'syslog_name': 'postfix/submission', @@ -36,10 +42,9 @@ default_submission_options = { 'smtpd_relay_restrictions': 'permit_sasl_authenticated,reject' } -smtps_flags = postconf.ServiceFlags( - service='smtps', type='inet', private='n', unpriv='-', chroot='y', - wakeup='-', maxproc='-', command_args='smtpd' -) +smtps_flags = postconf.ServiceFlags(service='smtps', type='inet', private='n', + unpriv='-', chroot='y', wakeup='-', + maxproc='-', command_args='smtpd') default_smtps_options = { 'syslog_name': 'postfix/smtps', From 6e8b825d44e848695df15950cb978bb76a96c408 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 14 Oct 2021 18:29:33 -0700 Subject: [PATCH 20/74] email_server: aliases: Drop hash DB and use sqlite3 directly - Postfix has the ability to use sqlite3 databases directly. There is no need to synchronize to a hash db and then use that. - Store the aliases database in /var/lib/postfix/. This will make backup and restore easier and remove dependence on FreedomBox and its data directory. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/__init__.py | 1 + .../modules/email_server/aliases/__init__.py | 49 ++----------------- plinth/modules/email_server/audit/__init__.py | 6 ++- plinth/modules/email_server/audit/aliases.py | 12 +++++ plinth/modules/email_server/audit/ldap.py | 2 +- .../data/etc/postfix/freedombox-aliases.cf | 5 ++ 6 files changed, 26 insertions(+), 49 deletions(-) create mode 100644 plinth/modules/email_server/audit/aliases.py create mode 100644 plinth/modules/email_server/data/etc/postfix/freedombox-aliases.cf diff --git a/plinth/modules/email_server/__init__.py b/plinth/modules/email_server/__init__.py index c2adc5efe..8926ea019 100644 --- a/plinth/modules/email_server/__init__.py +++ b/plinth/modules/email_server/__init__.py @@ -30,6 +30,7 @@ package_conflicts_action = 'ignore' packages = [ 'postfix-ldap', + 'postfix-sqlite', 'dovecot-pop3d', 'dovecot-imapd', 'dovecot-ldap', diff --git a/plinth/modules/email_server/aliases/__init__.py b/plinth/modules/email_server/aliases/__init__.py index d12d70946..206409056 100644 --- a/plinth/modules/email_server/aliases/__init__.py +++ b/plinth/modules/email_server/aliases/__init__.py @@ -2,13 +2,10 @@ # SPDX-License-Identifier: AGPL-3.0-or-later import contextlib -import dbm -import logging -import os import pwd import sqlite3 -from plinth.modules.email_server import lock +from plinth import actions from . import models @@ -24,12 +21,7 @@ CREATE TABLE IF NOT EXISTS Alias ( COMMIT; """ -mailsrv_dir = '/var/lib/plinth/mailsrv' -hash_db_path = mailsrv_dir + '/aliases' -sqlite_db_path = mailsrv_dir + '/aliases.sqlite3' - -alias_sync_mutex = lock.Mutex('alias-sync') -logger = logging.getLogger(__name__) +sqlite_db_path = '/var/lib/postfix/freedombox-aliases/aliases.sqlite3' @contextlib.contextmanager @@ -74,8 +66,6 @@ def put(uid_number, email_name): with db_cursor() as cur: cur.execute(s, (email_name, uid_number, 1, email_name)) - schedule_hash_update() - def delete(uid_number, alias_list): s = 'DELETE FROM Alias WHERE uid_number=? AND email_name=?' @@ -84,7 +74,6 @@ def delete(uid_number, alias_list): cur.execute('BEGIN') cur.executemany(s, parameter_seq) cur.execute('COMMIT') - schedule_hash_update() def set_enabled(uid_number, alias_list): @@ -102,46 +91,14 @@ def _set_status(uid_number, alias_list, status): cur.execute('BEGIN') cur.executemany(s, parameter_seq) cur.execute('COMMIT') - schedule_hash_update() - - -def schedule_hash_update(): - tmp = hash_db_path + '-tmp' - with alias_sync_mutex.lock_all(), db_cursor() as cur: - all_aliases = cur.execute('SELECT * FROM Alias') - - # Delete the temp file if exists - if os.path.exists(tmp): - os.unlink(tmp) - - # Create new alias db at temp path - db = dbm.ndbm.open(tmp, 'c') - try: - for row in all_aliases: - alias = models.Alias(**row) - key = alias.email_name.encode('ascii') + b'\0' - if alias.enabled: - value = str(alias.uid_number).encode('ascii') - value += b'@localhost\0' - else: - value = b'/dev/null\0' - db[key] = value - finally: - db.close() - - # Atomically replace old alias db, rename(2) - os.rename(tmp + '.db', hash_db_path + '.db') def first_setup(): + actions.superuser_run('email_server', ['-i', 'aliases', 'setup']) _create_db_schema_if_not_exists() - schedule_hash_update() def _create_db_schema_if_not_exists(): - # Create folder - if not os.path.isdir(mailsrv_dir): - os.mkdir(mailsrv_dir) # Create schema if not exists with db_cursor() as cur: cur.executescript(map_db_schema_script) diff --git a/plinth/modules/email_server/audit/__init__.py b/plinth/modules/email_server/audit/__init__.py index c543f483d..e35045731 100644 --- a/plinth/modules/email_server/audit/__init__.py +++ b/plinth/modules/email_server/audit/__init__.py @@ -3,6 +3,8 @@ Provides diagnosis and repair of email server configuration issues """ -from . import domain, home, ldap, models, rcube, spam, tls +from . import aliases, domain, home, ldap, models, rcube, spam, tls -__all__ = ['domain', 'home', 'ldap', 'models', 'rcube', 'spam', 'tls'] +__all__ = [ + 'aliases', 'domain', 'home', 'ldap', 'models', 'rcube', 'spam', 'tls' +] diff --git a/plinth/modules/email_server/audit/aliases.py b/plinth/modules/email_server/audit/aliases.py new file mode 100644 index 000000000..6edba5865 --- /dev/null +++ b/plinth/modules/email_server/audit/aliases.py @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +"""Privileged operations for managing aliases.""" + +import pathlib +import shutil + + +def action_setup(): + """Create a the sqlite3 database to be managed by FreedomBox.""" + path = pathlib.Path('/var/lib/postfix/freedombox-aliases/') + path.mkdir(mode=0o750, exist_ok=True) + shutil.chown(path, user='plinth', group='postfix') diff --git a/plinth/modules/email_server/audit/ldap.py b/plinth/modules/email_server/audit/ldap.py index 570adedd6..b62cabd5c 100644 --- a/plinth/modules/email_server/audit/ldap.py +++ b/plinth/modules/email_server/audit/ldap.py @@ -56,7 +56,7 @@ default_smtps_options = { MAILSRV_DIR = '/var/lib/plinth/mailsrv' ETC_ALIASES = 'hash:/etc/aliases' BEFORE_ALIASES = 'ldap:/etc/postfix/freedombox-username-to-uid-number.cf' -AFTER_ALIASES = 'hash:' + aliases.hash_db_path +AFTER_ALIASES = 'sqlite:/etc/postfix/freedombox-aliases.cf' logger = logging.getLogger(__name__) diff --git a/plinth/modules/email_server/data/etc/postfix/freedombox-aliases.cf b/plinth/modules/email_server/data/etc/postfix/freedombox-aliases.cf new file mode 100644 index 000000000..1d4b256b3 --- /dev/null +++ b/plinth/modules/email_server/data/etc/postfix/freedombox-aliases.cf @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later + +# Maintained by FreedomBox, do not edit. +dbpath = /var/lib/postfix/freedombox-aliases/aliases.sqlite3 +query = SELECT uid_number FROM Alias WHERE email_name='%s' AND status=1 From 778d22ac49470d0fb6653729325bc058496eb4d0 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 14 Oct 2021 19:00:58 -0700 Subject: [PATCH 21/74] email_server: aliases: Minor refactoring Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../modules/email_server/aliases/__init__.py | 107 +++++++++--------- plinth/modules/email_server/views.py | 4 +- 2 files changed, 58 insertions(+), 53 deletions(-) diff --git a/plinth/modules/email_server/aliases/__init__.py b/plinth/modules/email_server/aliases/__init__.py index 206409056..a1db8a6c7 100644 --- a/plinth/modules/email_server/aliases/__init__.py +++ b/plinth/modules/email_server/aliases/__init__.py @@ -9,38 +9,27 @@ from plinth import actions from . import models -map_db_schema_script = """ -PRAGMA journal_mode=WAL; -BEGIN; -CREATE TABLE IF NOT EXISTS Alias ( - email_name TEXT NOT NULL, - uid_number INTEGER NOT NULL, - status INTEGER NOT NULL, - PRIMARY KEY (email_name) -); -COMMIT; -""" - -sqlite_db_path = '/var/lib/postfix/freedombox-aliases/aliases.sqlite3' - @contextlib.contextmanager -def db_cursor(): +def _get_cursor(): + """Return a DB cursor as context manager.""" # Turn ON autocommit mode - con = sqlite3.connect(sqlite_db_path, isolation_level=None) - con.row_factory = sqlite3.Row + db_path = '/var/lib/postfix/freedombox-aliases/aliases.sqlite3' + connection = sqlite3.connect(db_path, isolation_level=None) + connection.row_factory = sqlite3.Row try: - cur = con.cursor() - yield cur + cursor = connection.cursor() + yield cursor finally: - con.close() + connection.close() def get(uid_number): - s = 'SELECT * FROM Alias WHERE uid_number=?' - with db_cursor() as cur: - rows = cur.execute(s, (uid_number, )) - result = [models.Alias(**r) for r in rows] + """Get all aliases of a user.""" + query = 'SELECT * FROM Alias WHERE uid_number=?' + with _get_cursor() as cursor: + rows = cursor.execute(query, (uid_number, )) + result = [models.Alias(**row) for row in rows] return result @@ -52,53 +41,69 @@ def exists(email_name): except KeyError: pass - with db_cursor() as cur: + with _get_cursor() as cursor: query = 'SELECT COUNT(*) FROM Alias WHERE email_name=?' - cur.execute(query, (email_name, )) - return cur.fetchone()[0] != 0 + cursor.execute(query, (email_name, )) + return cursor.fetchone()[0] != 0 def put(uid_number, email_name): - s = """INSERT INTO Alias(email_name, uid_number, status) - SELECT ?,?,? WHERE NOT EXISTS( + """Insert if not exists a new alias.""" + query = ''' +INSERT INTO Alias(email_name, uid_number, status) + SELECT ?,?,? WHERE NOT EXISTS ( SELECT 1 FROM Alias WHERE email_name=? - )""" - with db_cursor() as cur: - cur.execute(s, (email_name, uid_number, 1, email_name)) + ) +''' + with _get_cursor() as cursor: + cursor.execute(query, (email_name, uid_number, 1, email_name)) def delete(uid_number, alias_list): - s = 'DELETE FROM Alias WHERE uid_number=? AND email_name=?' - parameter_seq = ((uid_number, a) for a in alias_list) - with db_cursor() as cur: - cur.execute('BEGIN') - cur.executemany(s, parameter_seq) - cur.execute('COMMIT') + """Delete a set of aliases.""" + query = 'DELETE FROM Alias WHERE uid_number=? AND email_name=?' + parameter_seq = ((uid_number, alias) for alias in alias_list) + with _get_cursor() as cursor: + cursor.execute('BEGIN') + cursor.executemany(query, parameter_seq) + cursor.execute('COMMIT') -def set_enabled(uid_number, alias_list): +def enable(uid_number, alias_list): + """Enable a list of aliases.""" return _set_status(uid_number, alias_list, 1) -def set_disabled(uid_number, alias_list): +def disable(uid_number, alias_list): + """Disable a list of aliases.""" return _set_status(uid_number, alias_list, 0) def _set_status(uid_number, alias_list, status): - s = 'UPDATE Alias SET status=? WHERE uid_number=? AND email_name=?' - parameter_seq = ((status, uid_number, a) for a in alias_list) - with db_cursor() as cur: - cur.execute('BEGIN') - cur.executemany(s, parameter_seq) - cur.execute('COMMIT') + """Set the status value of a list of aliases.""" + query = 'UPDATE Alias SET status=? WHERE uid_number=? AND email_name=?' + parameter_seq = ((status, uid_number, alias) for alias in alias_list) + with _get_cursor() as cursor: + cursor.execute('BEGIN') + cursor.executemany(query, parameter_seq) + cursor.execute('COMMIT') def first_setup(): + """Create the database file and schema inside it.""" actions.superuser_run('email_server', ['-i', 'aliases', 'setup']) - _create_db_schema_if_not_exists() - -def _create_db_schema_if_not_exists(): # Create schema if not exists - with db_cursor() as cur: - cur.executescript(map_db_schema_script) + query = ''' +PRAGMA journal_mode=WAL; +BEGIN; +CREATE TABLE IF NOT EXISTS Alias ( + email_name TEXT NOT NULL, + uid_number INTEGER NOT NULL, + status INTEGER NOT NULL, + PRIMARY KEY (email_name) +); +COMMIT; +''' + with _get_cursor() as cursor: + cursor.executescript(query) diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 0d47b18f9..a3fc9bb18 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -203,9 +203,9 @@ class AliasView(FormView): if action == 'delete': aliases_module.delete(uid, alias_list) elif action == 'disable': - aliases_module.set_disabled(uid, alias_list) + aliases_module.disable(uid, alias_list) elif action == 'enable': - aliases_module.set_enabled(uid, alias_list) + aliases_module.enable(uid, alias_list) def _create_form_valid(self, form): """Handle a valid create alias form operation.""" From 6eb5980f84aa57988058f7682f107d23f4125ac1 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 14 Oct 2021 19:25:43 -0700 Subject: [PATCH 22/74] email_server: aliases: Minor refactoring to DB schema - Use the IntergrityError exception instead of a complex query to ignore an already existing alias. - When retrieving existing aliases, use explicit list of columns instead of * so that schema updates adding columns won't fail the code using the row results. - Use terminology used by post fix. "name" for the name of the alias. "value" for the mapping. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../modules/email_server/aliases/__init__.py | 61 +++++++++---------- plinth/modules/email_server/aliases/models.py | 4 +- .../data/etc/postfix/freedombox-aliases.cf | 2 +- plinth/modules/email_server/forms.py | 8 +-- 4 files changed, 36 insertions(+), 39 deletions(-) diff --git a/plinth/modules/email_server/aliases/__init__.py b/plinth/modules/email_server/aliases/__init__.py index a1db8a6c7..dc0340456 100644 --- a/plinth/modules/email_server/aliases/__init__.py +++ b/plinth/modules/email_server/aliases/__init__.py @@ -1,5 +1,5 @@ -"""Manages email aliases""" # SPDX-License-Identifier: AGPL-3.0-or-later +"""Manage email aliases.""" import contextlib import pwd @@ -24,65 +24,62 @@ def _get_cursor(): connection.close() -def get(uid_number): +def get(uid): """Get all aliases of a user.""" - query = 'SELECT * FROM Alias WHERE uid_number=?' + query = 'SELECT name, value, status FROM alias WHERE value=?' with _get_cursor() as cursor: - rows = cursor.execute(query, (uid_number, )) - result = [models.Alias(**row) for row in rows] - return result + rows = cursor.execute(query, (uid, )) + return [models.Alias(**row) for row in rows] -def exists(email_name): +def exists(name): """Return whether alias is already taken.""" try: - pwd.getpwnam(email_name) + pwd.getpwnam(name) return True except KeyError: pass with _get_cursor() as cursor: - query = 'SELECT COUNT(*) FROM Alias WHERE email_name=?' - cursor.execute(query, (email_name, )) + query = 'SELECT COUNT(*) FROM alias WHERE name=?' + cursor.execute(query, (name, )) return cursor.fetchone()[0] != 0 -def put(uid_number, email_name): +def put(uid, name): """Insert if not exists a new alias.""" - query = ''' -INSERT INTO Alias(email_name, uid_number, status) - SELECT ?,?,? WHERE NOT EXISTS ( - SELECT 1 FROM Alias WHERE email_name=? - ) -''' + query = 'INSERT INTO alias (name, value, status) VALUES (?, ?, ?)' with _get_cursor() as cursor: - cursor.execute(query, (email_name, uid_number, 1, email_name)) + try: + cursor.execute(query, (name, uid, 1)) + except sqlite3.IntegrityError: + pass # Alias exists, rare since we are already checking -def delete(uid_number, alias_list): +def delete(uid, aliases): """Delete a set of aliases.""" - query = 'DELETE FROM Alias WHERE uid_number=? AND email_name=?' - parameter_seq = ((uid_number, alias) for alias in alias_list) + query = 'DELETE FROM alias WHERE value=? AND name=?' + parameter_seq = ((uid, name) for name in aliases) with _get_cursor() as cursor: cursor.execute('BEGIN') cursor.executemany(query, parameter_seq) cursor.execute('COMMIT') -def enable(uid_number, alias_list): +def enable(uid, aliases): """Enable a list of aliases.""" - return _set_status(uid_number, alias_list, 1) + return _set_status(uid, aliases, 1) -def disable(uid_number, alias_list): +def disable(uid, aliases): """Disable a list of aliases.""" - return _set_status(uid_number, alias_list, 0) + return _set_status(uid, aliases, 0) -def _set_status(uid_number, alias_list, status): +def _set_status(uid, aliases, status): """Set the status value of a list of aliases.""" - query = 'UPDATE Alias SET status=? WHERE uid_number=? AND email_name=?' - parameter_seq = ((status, uid_number, alias) for alias in alias_list) + query = 'UPDATE alias SET status=? WHERE value=? AND name=?' + parameter_seq = ((status, uid, name) for name in aliases) with _get_cursor() as cursor: cursor.execute('BEGIN') cursor.executemany(query, parameter_seq) @@ -97,11 +94,11 @@ def first_setup(): query = ''' PRAGMA journal_mode=WAL; BEGIN; -CREATE TABLE IF NOT EXISTS Alias ( - email_name TEXT NOT NULL, - uid_number INTEGER NOT NULL, +CREATE TABLE IF NOT EXISTS alias ( + name TEXT NOT NULL, + value INTEGER NOT NULL, status INTEGER NOT NULL, - PRIMARY KEY (email_name) + PRIMARY KEY (name) ); COMMIT; ''' diff --git a/plinth/modules/email_server/aliases/models.py b/plinth/modules/email_server/aliases/models.py index a38d33e4e..8cad96a8b 100644 --- a/plinth/modules/email_server/aliases/models.py +++ b/plinth/modules/email_server/aliases/models.py @@ -3,8 +3,8 @@ from dataclasses import InitVar, dataclass, field @dataclass class Alias: - uid_number: int - email_name: str + value: int + name: str enabled: bool = field(init=False) status: InitVar[int] diff --git a/plinth/modules/email_server/data/etc/postfix/freedombox-aliases.cf b/plinth/modules/email_server/data/etc/postfix/freedombox-aliases.cf index 1d4b256b3..c6de827e5 100644 --- a/plinth/modules/email_server/data/etc/postfix/freedombox-aliases.cf +++ b/plinth/modules/email_server/data/etc/postfix/freedombox-aliases.cf @@ -2,4 +2,4 @@ # Maintained by FreedomBox, do not edit. dbpath = /var/lib/postfix/freedombox-aliases/aliases.sqlite3 -query = SELECT uid_number FROM Alias WHERE email_name='%s' AND status=1 +query = SELECT value FROM alias WHERE name='%s' AND status=1 diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index 7acc0a6fe..b7fbbddc4 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -49,10 +49,10 @@ class AliasListForm(forms.Form): def __init__(self, aliases, *args, **kwargs): """Populate the choices for aliases.""" super().__init__(*args, **kwargs) - enabled_aliases = [(alias.email_name, alias.email_name) - for alias in aliases if alias.enabled] - disabled_aliases = [(alias.email_name, alias.email_name) - for alias in aliases if not alias.enabled] + enabled_aliases = [(alias.name, alias.name) for alias in aliases + if alias.enabled] + disabled_aliases = [(alias.name, alias.name) for alias in aliases + if not alias.enabled] choices = [] if enabled_aliases: choices.append((_('Enabled'), enabled_aliases)) From db1df5ce6bd82560ebb62577b04f88e06fe9e65e Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 14 Oct 2021 22:30:27 -0700 Subject: [PATCH 23/74] email_server: aliases: Minor refactor to list view Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index a3fc9bb18..17792a52a 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -197,15 +197,15 @@ class AliasView(FormView): def _list_form_valid(self, form): """Handle a valid alias list form operation.""" - alias_list = form.cleaned_data['aliases'] + aliases = form.cleaned_data['aliases'] action = form.cleaned_data['action'] uid = self._get_uid() if action == 'delete': - aliases_module.delete(uid, alias_list) + aliases_module.delete(uid, aliases) elif action == 'disable': - aliases_module.disable(uid, alias_list) + aliases_module.disable(uid, aliases) elif action == 'enable': - aliases_module.enable(uid, alias_list) + aliases_module.enable(uid, aliases) def _create_form_valid(self, form): """Handle a valid create alias form operation.""" From f2279ab58a2fa946f6ae823e420c3f34158aaf50 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 14 Oct 2021 22:45:34 -0700 Subject: [PATCH 24/74] email_server: aliases: Fix showing empty alias list message - Trim the button labels. - Style the usual buttons as default buttons. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../modules/email_server/templates/email_alias.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plinth/modules/email_server/templates/email_alias.html b/plinth/modules/email_server/templates/email_alias.html index 7cbed7efd..2298aeeb8 100644 --- a/plinth/modules/email_server/templates/email_alias.html +++ b/plinth/modules/email_server/templates/email_alias.html @@ -10,7 +10,7 @@

{% trans 'Manage Aliases' %}

- {% if no_alias %} + {% if not list_form.fields.aliases.choices %}

{% trans "You have no email aliases." %}

{% else %}
@@ -18,12 +18,12 @@ {{ list_form|bootstrap }} - - + + + value="{% trans 'Delete' %}">
{% endif %} From 31b438e5fdb21d49f610c998fd6af3c4d0a8c155 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 09:18:09 -0700 Subject: [PATCH 25/74] email_server: aliases: Refactor for simpler organization Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../{aliases/__init__.py => aliases.py} | 14 ++++++++++++-- plinth/modules/email_server/aliases/models.py | 12 ------------ 2 files changed, 12 insertions(+), 14 deletions(-) rename plinth/modules/email_server/{aliases/__init__.py => aliases.py} (90%) delete mode 100644 plinth/modules/email_server/aliases/models.py diff --git a/plinth/modules/email_server/aliases/__init__.py b/plinth/modules/email_server/aliases.py similarity index 90% rename from plinth/modules/email_server/aliases/__init__.py rename to plinth/modules/email_server/aliases.py index dc0340456..0f751f876 100644 --- a/plinth/modules/email_server/aliases/__init__.py +++ b/plinth/modules/email_server/aliases.py @@ -4,10 +4,20 @@ import contextlib import pwd import sqlite3 +from dataclasses import InitVar, dataclass, field from plinth import actions -from . import models + +@dataclass +class Alias: + value: int + name: str + enabled: bool = field(init=False) + status: InitVar[int] + + def __post_init__(self, status): + self.enabled = (status != 0) @contextlib.contextmanager @@ -29,7 +39,7 @@ def get(uid): query = 'SELECT name, value, status FROM alias WHERE value=?' with _get_cursor() as cursor: rows = cursor.execute(query, (uid, )) - return [models.Alias(**row) for row in rows] + return [Alias(**row) for row in rows] def exists(name): diff --git a/plinth/modules/email_server/aliases/models.py b/plinth/modules/email_server/aliases/models.py deleted file mode 100644 index 8cad96a8b..000000000 --- a/plinth/modules/email_server/aliases/models.py +++ /dev/null @@ -1,12 +0,0 @@ -from dataclasses import InitVar, dataclass, field - - -@dataclass -class Alias: - value: int - name: str - enabled: bool = field(init=False) - status: InitVar[int] - - def __post_init__(self, status): - self.enabled = (status != 0) From ee544622bef6148168b657db9b065de7ddd62da4 Mon Sep 17 00:00:00 2001 From: Johannes Keyser Date: Mon, 1 Nov 2021 12:52:09 +0000 Subject: [PATCH 26/74] Translated using Weblate (German) Currently translated at 100.0% (1518 of 1518 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index bac88ee7e..e00d08119 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-25 18:50-0400\n" -"PO-Revision-Date: 2021-10-17 09:37+0000\n" -"Last-Translator: nautilusx \n" +"PO-Revision-Date: 2021-11-02 13:36+0000\n" +"Last-Translator: Johannes Keyser \n" "Language-Team: German \n" "Language: de\n" @@ -2112,6 +2112,8 @@ msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" +"Roundcube App bietet eine " +"Weboberfläche für den Zugriff auf E-Mails." #: plinth/modules/email_server/__init__.py:57 msgid "" @@ -2222,10 +2224,8 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:11 -#, fuzzy -#| msgid "My Aliases" msgid "Manage Aliases" -msgstr "Meine Aliase" +msgstr "Aliase verwalten" #: plinth/modules/email_server/templates/email_alias.html:14 msgid "You have no email aliases." @@ -2303,7 +2303,7 @@ msgstr "Home-Verzeichnis erstellen" #: plinth/modules/email_server/templates/my_mail.html:27 msgid "Your home directory is ready to receive emails." -msgstr "" +msgstr "Ihr Home-Verzeichnis ist bereit, E-Mails zu empfangen." #: plinth/modules/email_server/templates/tls_form.html:10 msgid "Keep current settings" From 77a0d54632b1cb3ff7361cbcb2dc8c0fd5600924 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 12:38:29 -0700 Subject: [PATCH 27/74] email_server: tls: Drop unimplemented TLS forms/view - In FreedomBox we will obtain and manage certificates automatically. No need for forms to manage TLS certificates Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../templates/email_security.html | 27 -------- .../email_server/templates/tls_form.html | 69 ------------------- plinth/modules/email_server/urls.py | 1 - plinth/modules/email_server/views.py | 7 +- 4 files changed, 1 insertion(+), 103 deletions(-) delete mode 100644 plinth/modules/email_server/templates/email_security.html delete mode 100644 plinth/modules/email_server/templates/tls_form.html diff --git a/plinth/modules/email_server/templates/email_security.html b/plinth/modules/email_server/templates/email_security.html deleted file mode 100644 index 0a65916f2..000000000 --- a/plinth/modules/email_server/templates/email_security.html +++ /dev/null @@ -1,27 +0,0 @@ -{# SPDX-License-Identifier: AGPL-3.0-or-later #} -{% extends "email_form_base.html" %} - -{% load i18n %} - -{% block content %} - - {{ block.super }} - -
- {% csrf_token %} -
- {% trans "Postfix TLS" %} - {% include "tls_form.html" with prefix="postfix" proto="smtp" %} -
- -
- {% trans "Dovecot TLS" %} - {% include "tls_form.html" with prefix="dovecot" proto="imap" %} -
- - -
- -{% endblock %} - diff --git a/plinth/modules/email_server/templates/tls_form.html b/plinth/modules/email_server/templates/tls_form.html deleted file mode 100644 index 544f6e55b..000000000 --- a/plinth/modules/email_server/templates/tls_form.html +++ /dev/null @@ -1,69 +0,0 @@ -{# SPDX-License-Identifier: AGPL-3.0-or-later #} - -{% load i18n %} - - -
- - -
- - -
- - - -
- -
- -
-
-
- - -
- - - -
- -
- -
-
- -
- -
- -
-
-
- - -
- - -
diff --git a/plinth/modules/email_server/urls.py b/plinth/modules/email_server/urls.py index 9121a3b33..c8bf07e26 100644 --- a/plinth/modules/email_server/urls.py +++ b/plinth/modules/email_server/urls.py @@ -8,7 +8,6 @@ from . import views urlpatterns = [ path('apps/email_server/', views.EmailServerView.as_view(), name='index'), - path('apps/email_server/security', views.TLSView.as_view()), path('apps/email_server/domains', views.DomainView.as_view()), path('apps/email_server/my_mail', non_admin_view(views.MyMailView.as_view()), name='my_mail'), diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 17792a52a..e0f54dff4 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -21,8 +21,7 @@ from . import audit, forms class TabMixin(View): - admin_tabs = [('', _('Home')), ('security', _('Security')), - ('domains', _('Domains'))] + admin_tabs = [('', _('Home')), ('domains', _('Domains'))] def get_context_data(self, *args, **kwargs): # Retrieve context data from the next method in the MRO @@ -212,10 +211,6 @@ class AliasView(FormView): aliases_module.put(self._get_uid(), form.cleaned_data['alias']) -class TLSView(TabMixin, TemplateView): - template_name = 'email_security.html' - - class DomainView(TabMixin, TemplateView): template_name = 'email_domains.html' From bb82dbdaa54418beca9c4e663201c52d0fc601d5 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 17:16:52 -0700 Subject: [PATCH 28/74] email_server: rspamd: Turn spam management link to a button Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/templates/email_server.html | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index 7277051e2..b48bc53aa 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -9,6 +9,10 @@ {% endblock %} {% block subsubmenu %} + + {% trans "Manage Spam" %} + + {% trans "Setup My Home" %} @@ -20,11 +24,6 @@ {% endblock %} {% block extra_content %} -

- - {% trans "Visit Rspamd administration interface" %} - -

{% if related_diagnostics %}

{% trans "Service Alert" %}

    From 94a6a9b8aa0b6bd9ba929b2f918535fb841ad4c6 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 17:35:14 -0700 Subject: [PATCH 29/74] email_server: domains: Add button for domain management form - It will dropped from tabs. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/templates/email_server.html | 4 ++++ plinth/modules/email_server/urls.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index b48bc53aa..9c4909294 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -9,6 +9,10 @@ {% endblock %} {% block subsubmenu %} + + {% trans "Domains" %} + {% trans "Manage Spam" %} diff --git a/plinth/modules/email_server/urls.py b/plinth/modules/email_server/urls.py index c8bf07e26..b7b0c9e43 100644 --- a/plinth/modules/email_server/urls.py +++ b/plinth/modules/email_server/urls.py @@ -8,7 +8,8 @@ from . import views urlpatterns = [ path('apps/email_server/', views.EmailServerView.as_view(), name='index'), - path('apps/email_server/domains', views.DomainView.as_view()), + path('apps/email_server/domains', views.DomainView.as_view(), + name='domains'), path('apps/email_server/my_mail', non_admin_view(views.MyMailView.as_view()), name='my_mail'), path('apps/email_server/my_aliases', From 10c9156a2933cb97d2b030ef09c3ae912b3113fa Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 17:37:47 -0700 Subject: [PATCH 30/74] email_server: Remove tabs from the interface - All the views are reachable using buttons. - Add title to the domains page as tabs are removed. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../email_server/templates/email_domains.html | 2 ++ plinth/modules/email_server/views.py | 22 +++----------- plinth/views.py | 29 ------------------- 3 files changed, 6 insertions(+), 47 deletions(-) diff --git a/plinth/modules/email_server/templates/email_domains.html b/plinth/modules/email_server/templates/email_domains.html index 5a588b658..6bb763e5b 100644 --- a/plinth/modules/email_server/templates/email_domains.html +++ b/plinth/modules/email_server/templates/email_domains.html @@ -7,6 +7,8 @@ {{ block.super }} +

    {% trans "Domains" %}

    +
    {% for data in fields %} diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index e0f54dff4..89a06a2b6 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -14,27 +14,13 @@ from django.views.generic.edit import FormView import plinth.actions import plinth.utils -from plinth.views import AppView, render_tabs +from plinth.views import AppView from . import aliases as aliases_module from . import audit, forms -class TabMixin(View): - admin_tabs = [('', _('Home')), ('domains', _('Domains'))] - - def get_context_data(self, *args, **kwargs): - # Retrieve context data from the next method in the MRO - context = super().get_context_data(*args, **kwargs) - # Populate context with customized data - context['tabs'] = self.render_dynamic_tabs() - return context - - def render_dynamic_tabs(self): - if plinth.utils.is_user_admin(self.request): - return render_tabs(self.request.path, self.admin_tabs) - - return '' +class ExceptionsMixin(View): def render_validation_error(self, validation_error, status=400): context = self.get_context_data() @@ -55,7 +41,7 @@ class TabMixin(View): return self.render_exception(error) -class EmailServerView(TabMixin, AppView): +class EmailServerView(ExceptionsMixin, AppView): """Server configuration page""" app_id = 'email_server' template_name = 'email_server.html' @@ -211,7 +197,7 @@ class AliasView(FormView): aliases_module.put(self._get_uid(), form.cleaned_data['alias']) -class DomainView(TabMixin, TemplateView): +class DomainView(ExceptionsMixin, TemplateView): template_name = 'email_domains.html' def get_context_data(self, *args, **kwargs): diff --git a/plinth/views.py b/plinth/views.py index 8cf07b614..c3bdbf9ba 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -3,7 +3,6 @@ Main FreedomBox views. """ -import io import time import urllib.parse @@ -12,7 +11,6 @@ from django.core.exceptions import ImproperlyConfigured from django.http import Http404, HttpResponseBadRequest, HttpResponseRedirect from django.template.response import TemplateResponse from django.urls import reverse -from django.utils.html import escape from django.utils.translation import gettext as _ from django.views.generic import TemplateView from django.views.generic.edit import FormView @@ -332,30 +330,3 @@ def notification_dismiss(request, id): notes[0].dismiss() return HttpResponseRedirect(_get_redirect_url_from_param(request)) - - -def render_tabs(request_path, tab_data): - """Generate a Bootstrap tab group and return the raw HTML - - :param request_path: value of `request.path` - :param tab_data: a list of (page_name, link_text) tuples - :returns: raw HTML of the tabs - """ - sb = io.StringIO() - sb.write('') - return sb.getvalue() From b3143ba201a0592d0362cb1bdef76e2b86bd2323 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 17:41:00 -0700 Subject: [PATCH 31/74] email_server: homedir: Fix styling to not show everything as header Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/templates/my_mail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plinth/modules/email_server/templates/my_mail.html b/plinth/modules/email_server/templates/my_mail.html index c5e614fce..bf03fce13 100644 --- a/plinth/modules/email_server/templates/my_mail.html +++ b/plinth/modules/email_server/templates/my_mail.html @@ -5,7 +5,7 @@ {% block content %} -

    Setup My Home +

    Setup My Home

    {% if not has_homedir %}

    From b62dd2442c9f9419b8ce7bee76bd179009ca256f Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 19:33:05 -0700 Subject: [PATCH 32/74] email_server: Minor refactor of license statement in templates Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/templates/email_alias.html | 4 +++- plinth/modules/email_server/templates/email_server.html | 4 +++- plinth/modules/email_server/templates/my_mail.html | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/plinth/modules/email_server/templates/email_alias.html b/plinth/modules/email_server/templates/email_alias.html index 2298aeeb8..64773f089 100644 --- a/plinth/modules/email_server/templates/email_alias.html +++ b/plinth/modules/email_server/templates/email_alias.html @@ -1,5 +1,7 @@ -{# SPDX-License-Identifier: AGPL-3.0-or-later #} {% extends "base.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} {% load bootstrap %} {% load i18n %} diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index 9c4909294..0083d1a1a 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -1,5 +1,7 @@ -{# SPDX-License-Identifier: AGPL-3.0-or-later #} {% extends "app.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} {% load i18n %} diff --git a/plinth/modules/email_server/templates/my_mail.html b/plinth/modules/email_server/templates/my_mail.html index bf03fce13..c8974aaa5 100644 --- a/plinth/modules/email_server/templates/my_mail.html +++ b/plinth/modules/email_server/templates/my_mail.html @@ -1,5 +1,7 @@ -{# SPDX-License-Identifier: AGPL-3.0-or-later #} {% extends "base.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} {% load i18n %} From e85001f01fe58f01f5bf6d5ae6fec1ab1bacc09d Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 19:43:59 -0700 Subject: [PATCH 33/74] email_server: domains: Use Django forms and views - Eliminate error-prone custom code and styling. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/audit/domain.py | 23 ++------ plinth/modules/email_server/forms.py | 7 +++ .../email_server/templates/email_domains.html | 37 ------------ .../templates/email_form_base.html | 19 ------- plinth/modules/email_server/urls.py | 2 +- plinth/modules/email_server/views.py | 56 ++++++++++++------- 6 files changed, 50 insertions(+), 94 deletions(-) delete mode 100644 plinth/modules/email_server/templates/email_domains.html delete mode 100644 plinth/modules/email_server/templates/email_form_base.html diff --git a/plinth/modules/email_server/audit/domain.py b/plinth/modules/email_server/audit/domain.py index da8c77ea6..74f5b6e72 100644 --- a/plinth/modules/email_server/audit/domain.py +++ b/plinth/modules/email_server/audit/domain.py @@ -4,12 +4,12 @@ import io import json import os +import pathlib import re import select import subprocess import sys import time -from types import SimpleNamespace from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ @@ -181,22 +181,11 @@ def _apply_domain_changes(conf_dict): def get_domain_config(): - fields = [] - - # Special keys - mailname = SimpleNamespace(key='_mailname', name='/etc/mailname') - with open('/etc/mailname', 'r') as fd: - mailname.value = fd.readline().strip() - fields.append(mailname) - - # Postconf keys - postconf_keys = [k for k in managed_keys if not k.startswith('_')] - result_dict = postconf.get_many(postconf_keys) - for key, value in result_dict.items(): - field = SimpleNamespace(key=key, value=value, name='$' + key) - fields.append(field) - - return fields + """Return the current domain configuration.""" + postconf_keys = [key for key in managed_keys if not key.startswith('_')] + config = postconf.get_many(postconf_keys) + config['_mailname'] = pathlib.Path('/etc/mailname').read_text().strip() + return config def set_keys(raw): diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index b7fbbddc4..5b48a3d71 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -18,6 +18,13 @@ class EmailServerForm(forms.Form): super().__init__(*args, **kwargs) +class DomainsForm(forms.Form): + _mailname = forms.CharField(required=True, strip=True) + mydomain = forms.CharField(required=True, strip=True) + myhostname = forms.CharField(required=True, strip=True) + mydestination = forms.CharField(required=True, strip=True) + + class AliasCreateForm(forms.Form): """Form to create a new alias.""" alias = forms.CharField(label=_('New alias (without @domain)'), diff --git a/plinth/modules/email_server/templates/email_domains.html b/plinth/modules/email_server/templates/email_domains.html deleted file mode 100644 index 6bb763e5b..000000000 --- a/plinth/modules/email_server/templates/email_domains.html +++ /dev/null @@ -1,37 +0,0 @@ -{# SPDX-License-Identifier: AGPL-3.0-or-later #} -{% extends "email_form_base.html" %} -{% load bootstrap %} -{% load i18n %} - -{% block content %} - - {{ block.super }} - -

    {% trans "Domains" %}

    - - - - {% for data in fields %} -
    -
    - {{ data.name }} = {{ data.value }} -
    -
    - -
    - -
    -
    -
    - {% endfor %} - - {% csrf_token %} - - - - -{% endblock %} diff --git a/plinth/modules/email_server/templates/email_form_base.html b/plinth/modules/email_server/templates/email_form_base.html deleted file mode 100644 index 390c0936b..000000000 --- a/plinth/modules/email_server/templates/email_form_base.html +++ /dev/null @@ -1,19 +0,0 @@ -{# SPDX-License-Identifier: AGPL-3.0-or-later #} -{% extends "base.html" %} - -{% load i18n %} - -{% block content %} - {{ tabs|safe }} - {{ block.super }} - {% if error %} - - {% endif %} -{% endblock %} diff --git a/plinth/modules/email_server/urls.py b/plinth/modules/email_server/urls.py index b7b0c9e43..3c29b382a 100644 --- a/plinth/modules/email_server/urls.py +++ b/plinth/modules/email_server/urls.py @@ -8,7 +8,7 @@ from . import views urlpatterns = [ path('apps/email_server/', views.EmailServerView.as_view(), name='index'), - path('apps/email_server/domains', views.DomainView.as_view(), + path('apps/email_server/domains', views.DomainsView.as_view(), name='domains'), path('apps/email_server/my_mail', non_admin_view(views.MyMailView.as_view()), name='my_mail'), diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 89a06a2b6..e10955c14 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -4,6 +4,7 @@ Views for the email app. """ import pwd +from django.contrib import messages from django.core.exceptions import ValidationError from django.http import HttpResponseBadRequest from django.shortcuts import redirect @@ -197,30 +198,45 @@ class AliasView(FormView): aliases_module.put(self._get_uid(), form.cleaned_data['alias']) -class DomainView(ExceptionsMixin, TemplateView): - template_name = 'email_domains.html' +class DomainsView(FormView): + """View to allow editing domain related settings.""" + template_name = 'form.html' + form_class = forms.DomainsForm + prefix = 'domain' + success_url = reverse_lazy('email_server:domains') - def get_context_data(self, *args, **kwargs): - context = super().get_context_data(*args, **kwargs) - fields = audit.domain.get_domain_config() - # If having post data, display the posted values - for field in fields: - field.new_value = self.request.POST.get(field.key, '') - context['fields'] = fields + def get_initial(self): + """Return the initial values to populate in the form.""" + initial = super().get_initial() + initial.update(audit.domain.get_domain_config()) + return initial + + def get_context_data(self, **kwargs): + """Add the title to the document.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Domains') return context - def post(self, request): - return self.catch_exceptions(self._post, request) + def form_valid(self, form): + """Update the settings for changed domain values.""" + old_data = form.initial + new_data = form.cleaned_data + config = {} + for key in form.initial: + if old_data[key] != new_data[key]: + config[key] = new_data[key] - def _post(self, request): - changed = {} - # Skip blank fields - for key, value in request.POST.items(): - value = value.strip() - if value: - changed[key] = value - audit.domain.set_keys(changed) - return self.render_to_response(self.get_context_data()) + if config: + try: + audit.domain.set_keys(config) + messages.success(self.request, _('Configuration updated')) + except Exception: + messages.success(self.request, + _('Error updating configuration')) + else: + messages.info(self.request, _('Setting unchanged')) + + return super().form_valid(form) class XmlView(TemplateView): From 220149e6e07fae730a5f7efa8c3c0c5c4260e47b Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 15 Oct 2021 21:25:15 -0700 Subject: [PATCH 34/74] email_server: domains: Add validation to form - Based on what is already done in domains.py at the time of setting the configuration. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/forms.py | 31 ++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index 5b48a3d71..854f47685 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -6,10 +6,17 @@ import re from django import forms from django.core.exceptions import ValidationError +from django.core.validators import RegexValidator from django.utils.translation import gettext_lazy as _ from . import aliases as aliases_module +domain_validator = RegexValidator(r'^[A-Za-z0-9-\.]+$', + _('Enter a valid domain')) +destination_validator = RegexValidator( + r'^[ -~]+$', # ASCII chars from 32 to 126 + _('Enter a valid destination')) + class EmailServerForm(forms.Form): domain = forms.CharField(label=_('domain'), max_length=256) @@ -19,10 +26,26 @@ class EmailServerForm(forms.Form): class DomainsForm(forms.Form): - _mailname = forms.CharField(required=True, strip=True) - mydomain = forms.CharField(required=True, strip=True) - myhostname = forms.CharField(required=True, strip=True) - mydestination = forms.CharField(required=True, strip=True) + _mailname = forms.CharField(required=True, strip=True, + validators=[domain_validator]) + mydomain = forms.CharField(required=True, strip=True, + validators=[domain_validator]) + myhostname = forms.CharField(required=True, strip=True, + validators=[domain_validator]) + mydestination = forms.CharField(required=True, strip=True, + validators=[destination_validator]) + + def clean(self): + """Convert values to lower case.""" + data = self.cleaned_data + if '_mailname' in data: + data['_mailname'] = data['_mailname'].lower() + + if 'myhostname' in data: + data['myhostname'] = data['myhostname'].lower() + + if 'mydestination' in data: + data['mydestination'] = data['mydestination'].lower() class AliasCreateForm(forms.Form): From a2038e98d6cbca264086bc425686b4a82767187a Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sun, 17 Oct 2021 22:12:25 -0700 Subject: [PATCH 35/74] email_server: action: Refactor for simplicity - Parse arguments in a readable way. - Convert decorator into simple call. - Make a simple call instead of looking for subcommand. - Don't setup logging in global scope. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/email_server | 56 +++++++++------------ plinth/modules/email_server/aliases.py | 2 +- plinth/modules/email_server/audit/domain.py | 6 +-- plinth/modules/email_server/audit/home.py | 3 +- plinth/modules/email_server/audit/ldap.py | 2 +- plinth/modules/email_server/audit/rcube.py | 6 +-- plinth/modules/email_server/audit/spam.py | 2 +- plinth/modules/email_server/audit/tls.py | 6 +-- 8 files changed, 38 insertions(+), 45 deletions(-) diff --git a/actions/email_server b/actions/email_server index 1cc122e5d..6bc0052d9 100755 --- a/actions/email_server +++ b/actions/email_server @@ -1,5 +1,8 @@ #!/usr/bin/python3 # SPDX-License-Identifier: AGPL-3.0-or-later +""" +Configuration helper for email server. +""" import argparse import logging @@ -7,50 +10,39 @@ import os import sys import plinth.log +from plinth.modules.email_server import audit EXIT_SYNTAX = 10 EXIT_PERM = 20 -# Set up logging -plinth.log.pipe_to_syslog(to_stderr='tty') logger = logging.getLogger(os.path.basename(__file__)) -def reserved_for_root(fun): - def wrapped(*args, **kwargs): - if os.getuid() != 0: - logger.critical('This action is reserved for root') - sys.exit(EXIT_PERM) - return fun(*args, **kwargs) - return wrapped - - def main(): - if not sys.stdin.isatty(): - print('WARNING: Output will not be shown. Check syslog for logs', - file=sys.stderr) + """Parse arguments.""" + # Set up logging + plinth.log.pipe_to_syslog(to_stderr='tty') parser = argparse.ArgumentParser() - group = parser.add_mutually_exclusive_group(required=True) - group.add_argument('-i', nargs='+', dest='ipc') + parser.add_argument('module', help='Module to trigger action in') + parser.add_argument('action', help='Action to trigger in module') + parser.add_argument('arguments', help='String arguments for action', + nargs='*') + args = parser.parse_args() - # Select the first non-empty dict item - adict = vars(parser.parse_args()) - generator = (kv for kv in adict.items() if kv[1] is not None) - subcommand, arguments = next(generator) - - function = globals()['subcommand_' + subcommand] try: - function(*arguments) - except Exception as e: - logger.exception(e) + _call(args.module, args.action, args.arguments) + except Exception as exception: + logger.exception(exception) _log_additional_info() sys.exit(1) -@reserved_for_root -def subcommand_ipc(module_name, action_name, *args): - import plinth.modules.email_server.audit as audit +def _call(module_name, action_name, arguments): + """Import the module and run action as superuser.""" + if os.getuid() != 0: + logger.critical('This action is reserved for root') + sys.exit(EXIT_PERM) # We only run actions defined in the audit module if module_name not in audit.__all__: @@ -58,15 +50,17 @@ def subcommand_ipc(module_name, action_name, *args): sys.exit(EXIT_SYNTAX) module = getattr(audit, module_name) - function = getattr(module, 'action_' + action_name, None) - if function is None: + try: + action = getattr(module, 'action_' + action_name) + except AttributeError: logger.critical('Bad action: %s/%r', module_name, action_name) sys.exit(EXIT_SYNTAX) - function(*args) + action(*arguments) def _log_additional_info(): + """Log additional debugging information.""" import grp import pwd resu = ','.join(pwd.getpwuid(uid).pw_name for uid in os.getresuid()) diff --git a/plinth/modules/email_server/aliases.py b/plinth/modules/email_server/aliases.py index 0f751f876..57cba1f83 100644 --- a/plinth/modules/email_server/aliases.py +++ b/plinth/modules/email_server/aliases.py @@ -98,7 +98,7 @@ def _set_status(uid, aliases, status): def first_setup(): """Create the database file and schema inside it.""" - actions.superuser_run('email_server', ['-i', 'aliases', 'setup']) + actions.superuser_run('email_server', ['aliases', 'setup']) # Create schema if not exists query = ''' diff --git a/plinth/modules/email_server/audit/domain.py b/plinth/modules/email_server/audit/domain.py index 74f5b6e72..bfdfb3714 100644 --- a/plinth/modules/email_server/audit/domain.py +++ b/plinth/modules/email_server/audit/domain.py @@ -42,14 +42,14 @@ def get(): def repair(): - superuser_run('email_server', ['-i', 'domain', 'set_up']) + superuser_run('email_server', ['domain', 'set_up']) def repair_component(action_name): allowed_actions = {'set_up': ['postfix']} if action_name not in allowed_actions: return - superuser_run('email_server', ['-i', 'domain', action_name]) + superuser_run('email_server', ['domain', action_name]) return allowed_actions[action_name] @@ -199,7 +199,7 @@ def set_keys(raw): raise ClientError('POST data exceeds max line length') try: - superuser_run('email_server', ['-i', 'domain', 'set_keys'], input=ipc) + superuser_run('email_server', ['domain', 'set_keys'], input=ipc) except ActionError as e: stdout = e.args[1] if not stdout.startswith('ClientError:'): diff --git a/plinth/modules/email_server/audit/home.py b/plinth/modules/email_server/audit/home.py index 3e7d54326..161ba325a 100644 --- a/plinth/modules/email_server/audit/home.py +++ b/plinth/modules/email_server/audit/home.py @@ -49,8 +49,7 @@ def put_uid(uid_number): def _put(arg_type, user_info): try: - args = ['-i', 'home', 'mk', arg_type, user_info] - superuser_run('email_server', args) + superuser_run('email_server', ['home', 'mk', arg_type, user_info]) except ActionError as e: raise RuntimeError('Action script failure') from e diff --git a/plinth/modules/email_server/audit/ldap.py b/plinth/modules/email_server/audit/ldap.py index b62cabd5c..120176d22 100644 --- a/plinth/modules/email_server/audit/ldap.py +++ b/plinth/modules/email_server/audit/ldap.py @@ -86,7 +86,7 @@ def repair(): POST /audit/ldap/repair """ aliases.first_setup() - actions.superuser_run('email_server', ['-i', 'ldap', 'set_up']) + actions.superuser_run('email_server', ['ldap', 'set_up']) def action_set_up(): diff --git a/plinth/modules/email_server/audit/rcube.py b/plinth/modules/email_server/audit/rcube.py index e6f24f43c..3395a3329 100644 --- a/plinth/modules/email_server/audit/rcube.py +++ b/plinth/modules/email_server/audit/rcube.py @@ -32,7 +32,7 @@ def get(): 'rc_config_header': _('RoundCube configured for FreedomBox email'), } - output = actions.superuser_run('email_server', ['-i', 'rcube', 'check']) + output = actions.superuser_run('email_server', ['rcube', 'check']) results = json.loads(output) for i in range(0, len(results)): results[i] = models.Diagnosis.from_json(results[i], translation.get) @@ -41,14 +41,14 @@ def get(): def repair(): - actions.superuser_run('email_server', ['-i', 'rcube', 'set_up']) + actions.superuser_run('email_server', ['rcube', 'set_up']) def repair_component(action): action_to_services = {'set_up': []} if action not in action_to_services: return - actions.superuser_run('email_server', ['-i', 'rcube', action]) + actions.superuser_run('email_server', ['rcube', action]) return action_to_services[action] diff --git a/plinth/modules/email_server/audit/spam.py b/plinth/modules/email_server/audit/spam.py index 7809abd82..d070a9f8b 100644 --- a/plinth/modules/email_server/audit/spam.py +++ b/plinth/modules/email_server/audit/spam.py @@ -94,7 +94,7 @@ def get(): def repair(): - actions.superuser_run('email_server', ['-i', 'spam', 'set_filter']) + actions.superuser_run('email_server', ['spam', 'set_filter']) def check_filter(title=''): diff --git a/plinth/modules/email_server/audit/tls.py b/plinth/modules/email_server/audit/tls.py index 145dea372..96e7d9ab4 100644 --- a/plinth/modules/email_server/audit/tls.py +++ b/plinth/modules/email_server/audit/tls.py @@ -90,20 +90,20 @@ def _get_superuser_results(results): translation = { 'cert_availability': _('Has a TLS certificate'), } - dump = actions.superuser_run('email_server', ['-i', 'tls', 'check']) + dump = actions.superuser_run('email_server', ['tls', 'check']) for jmap in json.loads(dump): results.append(models.Diagnosis.from_json(jmap, translation.get)) def repair(): - actions.superuser_run('email_server', ['-i', 'tls', 'set_up']) + actions.superuser_run('email_server', ['tls', 'set_up']) def repair_component(action): action_to_services = {'set_cert': ['dovecot', 'postfix']} if action not in action_to_services: # action not allowed return - actions.superuser_run('email_server', ['-i', 'tls', action]) + actions.superuser_run('email_server', ['tls', action]) return action_to_services[action] From 8cb100be793ef5f2399116b4d2c7a0ab4cac3723 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sun, 17 Oct 2021 22:15:12 -0700 Subject: [PATCH 36/74] email_server: yapf formatting Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/audit/tls.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plinth/modules/email_server/audit/tls.py b/plinth/modules/email_server/audit/tls.py index 96e7d9ab4..55d92ca57 100644 --- a/plinth/modules/email_server/audit/tls.py +++ b/plinth/modules/email_server/audit/tls.py @@ -168,8 +168,8 @@ def write_dovecot_cert_config(cert, key): def check_postfix_cert_usage(title=''): prefix = '/etc/letsencrypt/live/' diagnosis = models.Diagnosis(title, action='set_cert') - conf = postconf.get_many_unsafe(['smtpd_tls_cert_file', - 'smtpd_tls_key_file']) + conf = postconf.get_many_unsafe( + ['smtpd_tls_cert_file', 'smtpd_tls_key_file']) if not conf['smtpd_tls_cert_file'].startswith(prefix): diagnosis.error("Cert file not in Let's Encrypt directory") if not conf['smtpd_tls_key_file'].startswith(prefix): @@ -197,7 +197,7 @@ def action_set_cert(): def action_check(): - checks = ('cert_availability',) + checks = ('cert_availability', ) results = [] for check_name in checks: check_function = globals()['su_check_' + check_name] From ce3668d5e86ddc0c68ab1e1323683d056391adc6 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Mon, 18 Oct 2021 12:00:38 -0700 Subject: [PATCH 37/74] log, email_server: Don't use syslog instead of journald - Syslog is not used on FreedomBox machines. Logging to syslog instead of journald looses a lot of information fields that are otherwise available. - Drop logging additional information. Most of the information is already present in full journald records. Access using journalctl -o json. - Use the same formatting for console as the primary daemon. - When logging for actions, capture warnings too. - Always log to stderr so that UI can capture the traceback and show UI error messages. stderr is never used for returning data. Tests: - Run action script using command line with a error 'sudo actions/email_server home mk a b'. See the traceback message printed on stderr (not stdout). Message is printed with full field information in journalctl -o json. - Main daemon writes to stderr and to journal with same formatting as before. - Adding a warning in action code or main daemon results in printing of the warning with desired formatting. import warnings; warnings.warn('Foo warning') Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/email_server | 19 ++-------------- plinth/log.py | 54 ++++++++++++++++++-------------------------- 2 files changed, 24 insertions(+), 49 deletions(-) diff --git a/actions/email_server b/actions/email_server index 6bc0052d9..2c0fb1557 100755 --- a/actions/email_server +++ b/actions/email_server @@ -15,13 +15,12 @@ from plinth.modules.email_server import audit EXIT_SYNTAX = 10 EXIT_PERM = 20 -logger = logging.getLogger(os.path.basename(__file__)) +logger = logging.getLogger(__file__) def main(): """Parse arguments.""" - # Set up logging - plinth.log.pipe_to_syslog(to_stderr='tty') + plinth.log.action_init() parser = argparse.ArgumentParser() parser.add_argument('module', help='Module to trigger action in') @@ -34,7 +33,6 @@ def main(): _call(args.module, args.action, args.arguments) except Exception as exception: logger.exception(exception) - _log_additional_info() sys.exit(1) @@ -59,18 +57,5 @@ def _call(module_name, action_name, arguments): action(*arguments) -def _log_additional_info(): - """Log additional debugging information.""" - import grp - import pwd - resu = ','.join(pwd.getpwuid(uid).pw_name for uid in os.getresuid()) - resg = ','.join(grp.getgrgid(gid).gr_name for gid in os.getresgid()) - pyver = sys.version.replace('\n', ' ') - logger.error('--- Additional Information ---') - logger.error('resuid=%s, resgid=%s', resu, resg) - logger.error('argv=%r, cwd=%r', sys.argv, os.getcwd()) - logger.error('pyver=%s (%s)', pyver, os.uname().machine) - - if __name__ == '__main__': main() diff --git a/plinth/log.py b/plinth/log.py index ddf984321..653e42eba 100644 --- a/plinth/log.py +++ b/plinth/log.py @@ -5,12 +5,9 @@ Setup logging for the application. import importlib import logging -import logging.handlers -import sys +import logging.config import warnings -import cherrypy - from . import cfg default_level = None @@ -63,13 +60,8 @@ class ColoredFormatter(logging.Formatter): return super().format(record) -def init(): - """Setup the logging framework.""" - # Remove default handlers and let the log message propagate to root logger. - for cherrypy_logger in [cherrypy.log.error_log, cherrypy.log.access_log]: - for handler in list(cherrypy_logger.handlers): - cherrypy_logger.removeHandler(handler) - +def _capture_warnings(): + """Capture all warnings include deprecation warnings.""" # Capture all Python warnings such as deprecation warnings logging.captureWarnings(True) @@ -80,6 +72,25 @@ def init(): warnings.filterwarnings('default', '', ImportWarning) +def action_init(): + """Initialize logging for action scripts.""" + _capture_warnings() + + logging.config.dictConfig(get_configuration()) + + +def init(): + """Setup the logging framework.""" + import cherrypy + + # Remove default handlers and let the log message propagate to root logger. + for cherrypy_logger in [cherrypy.log.error_log, cherrypy.log.access_log]: + for handler in list(cherrypy_logger.handlers): + cherrypy_logger.removeHandler(handler) + + _capture_warnings() + + def setup_cherrypy_static_directory(app): """Hush output from cherrypy static file request logging. @@ -129,24 +140,3 @@ def get_configuration(): configuration['root']['handlers'].append('journal') return configuration - - -def pipe_to_syslog(level=logging.INFO, to_stderr=True): - """Make the root logger write to syslog and stderr. Useful in actions""" - logger = logging.getLogger() - logger.setLevel(level) - - fmt = '/freedombox/%(name)s[%(process)d]: %(levelname)s: %(message)s' - formatter = logging.Formatter(fmt=fmt) - - # Using syslog in Python: https://stackoverflow.com/q/3968669 - syslog_handler = logging.handlers.SysLogHandler(address='/dev/log') - syslog_handler.setFormatter(formatter) - logger.addHandler(syslog_handler) - - if to_stderr == 'tty' and sys.stdin.isatty(): - to_stderr = True - if to_stderr is True: - stderr_handler = logging.StreamHandler() - stderr_handler.setFormatter(formatter) - logger.addHandler(stderr_handler) From fb47f35e8705267691bf8ea9f8fa2744d8b46d6e Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Mon, 18 Oct 2021 12:20:57 -0700 Subject: [PATCH 38/74] email_server: action: Add argument type checking for extra safety Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/email_server | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/actions/email_server b/actions/email_server index 2c0fb1557..8cfc79ae5 100755 --- a/actions/email_server +++ b/actions/email_server @@ -54,6 +54,11 @@ def _call(module_name, action_name, arguments): logger.critical('Bad action: %s/%r', module_name, action_name) sys.exit(EXIT_SYNTAX) + for argument in arguments: + if not isinstance(argument, str): + logger.critical('Bad argument: %s', argument) + sys.exit(EXIT_SYNTAX) + action(*arguments) From d0cf01fb290a5756bb547438447775ebebcb50e2 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 20 Oct 2021 17:00:10 -0700 Subject: [PATCH 39/74] email_server: Don't use user IDs when performing lookups - Typical mail systems are configured to work on usernames or virtual usernames. UIDs/GIDs are only needed at the final moment when delivering mails to user inboxes that need to have proper UID/GID set. - This makes it easy for dovecot to simply use PAM authentication instead of having to use LDAP. - Trying to hide UID from email headers is no longer necessary. Received: header is important for debugging mail delivery across the chain. Don't miss out. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/aliases.py | 28 ++++++------ plinth/modules/email_server/audit/ldap.py | 45 +++++-------------- plinth/modules/email_server/audit/models.py | 13 ------ .../dovecot/conf.d/05-freedombox-auth.conf | 9 ---- .../dovecot/conf.d/90-freedombox-lmtp.conf | 4 -- .../freedombox-ldap-userdb-uid.conf.ext | 22 --------- .../freedombox-username-to-uid-number.cf | 10 ----- plinth/modules/email_server/views.py | 18 +++----- 8 files changed, 33 insertions(+), 116 deletions(-) delete mode 100644 plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-userdb-uid.conf.ext delete mode 100644 plinth/modules/email_server/data/etc/postfix/freedombox-username-to-uid-number.cf diff --git a/plinth/modules/email_server/aliases.py b/plinth/modules/email_server/aliases.py index 57cba1f83..85f2910ba 100644 --- a/plinth/modules/email_server/aliases.py +++ b/plinth/modules/email_server/aliases.py @@ -11,7 +11,7 @@ from plinth import actions @dataclass class Alias: - value: int + value: str name: str enabled: bool = field(init=False) status: InitVar[int] @@ -34,11 +34,11 @@ def _get_cursor(): connection.close() -def get(uid): +def get(username): """Get all aliases of a user.""" query = 'SELECT name, value, status FROM alias WHERE value=?' with _get_cursor() as cursor: - rows = cursor.execute(query, (uid, )) + rows = cursor.execute(query, (username, )) return [Alias(**row) for row in rows] @@ -56,40 +56,40 @@ def exists(name): return cursor.fetchone()[0] != 0 -def put(uid, name): +def put(username, name): """Insert if not exists a new alias.""" query = 'INSERT INTO alias (name, value, status) VALUES (?, ?, ?)' with _get_cursor() as cursor: try: - cursor.execute(query, (name, uid, 1)) + cursor.execute(query, (name, username, 1)) except sqlite3.IntegrityError: pass # Alias exists, rare since we are already checking -def delete(uid, aliases): +def delete(username, aliases): """Delete a set of aliases.""" query = 'DELETE FROM alias WHERE value=? AND name=?' - parameter_seq = ((uid, name) for name in aliases) + parameter_seq = ((username, name) for name in aliases) with _get_cursor() as cursor: cursor.execute('BEGIN') cursor.executemany(query, parameter_seq) cursor.execute('COMMIT') -def enable(uid, aliases): +def enable(username, aliases): """Enable a list of aliases.""" - return _set_status(uid, aliases, 1) + return _set_status(username, aliases, 1) -def disable(uid, aliases): +def disable(username, aliases): """Disable a list of aliases.""" - return _set_status(uid, aliases, 0) + return _set_status(username, aliases, 0) -def _set_status(uid, aliases, status): +def _set_status(username, aliases, status): """Set the status value of a list of aliases.""" query = 'UPDATE alias SET status=? WHERE value=? AND name=?' - parameter_seq = ((status, uid, name) for name in aliases) + parameter_seq = ((status, username, name) for name in aliases) with _get_cursor() as cursor: cursor.execute('BEGIN') cursor.executemany(query, parameter_seq) @@ -106,7 +106,7 @@ PRAGMA journal_mode=WAL; BEGIN; CREATE TABLE IF NOT EXISTS alias ( name TEXT NOT NULL, - value INTEGER NOT NULL, + value TEXT NOT NULL, status INTEGER NOT NULL, PRIMARY KEY (name) ); diff --git a/plinth/modules/email_server/audit/ldap.py b/plinth/modules/email_server/audit/ldap.py index 120176d22..f7969a1a8 100644 --- a/plinth/modules/email_server/audit/ldap.py +++ b/plinth/modules/email_server/audit/ldap.py @@ -54,9 +54,7 @@ default_smtps_options = { } MAILSRV_DIR = '/var/lib/plinth/mailsrv' -ETC_ALIASES = 'hash:/etc/aliases' -BEFORE_ALIASES = 'ldap:/etc/postfix/freedombox-username-to-uid-number.cf' -AFTER_ALIASES = 'sqlite:/etc/postfix/freedombox-aliases.cf' +SQLITE_ALIASES = 'sqlite:/etc/postfix/freedombox-aliases.cf' logger = logging.getLogger(__name__) @@ -123,45 +121,26 @@ def check_alias_maps(title=''): """Check the ability to mail to usernames and user aliases""" diagnosis = models.MainCfDiagnosis(title) - analysis = models.AliasMapsAnalysis() - analysis.parsed = postconf.parse_maps_by_key_unsafe('alias_maps') - analysis.isystem = list_find(analysis.parsed, ETC_ALIASES) - analysis.ibefore = list_find(analysis.parsed, BEFORE_ALIASES) - analysis.iafter = list_find(analysis.parsed, AFTER_ALIASES) - - if analysis.ibefore == -1 or analysis.iafter == -1: - diagnosis.flag_once('alias_maps', user=analysis) + alias_maps = postconf.get_unsafe('alias_maps').replace(',', ' ').split(' ') + if SQLITE_ALIASES not in alias_maps: + diagnosis.flag_once('alias_maps', user=alias_maps) diagnosis.critical('Required maps not in list') - if analysis.ibefore > analysis.iafter: - diagnosis.flag_once('alias_maps', user=analysis) - diagnosis.critical('Insecure map order') return diagnosis def fix_alias_maps(diagnosis): - diagnosis.repair('alias_maps', rearrange_alias_maps) + + def fix_value(alias_maps): + if SQLITE_ALIASES not in alias_maps: + alias_maps.append(SQLITE_ALIASES) + + return ' '.join(alias_maps) + + diagnosis.repair('alias_maps', fix_value) diagnosis.apply_changes(postconf.set_many_unsafe) -def rearrange_alias_maps(analysis): - # Delete *all* references to BEFORE_ALIASES and AFTER_ALIASES - for i in range(len(analysis.parsed)): - if analysis.parsed[i] in (BEFORE_ALIASES, AFTER_ALIASES): - analysis.parsed[i] = '' - # Does hash:/etc/aliases exist in list? - if analysis.isystem >= 0: - # Put the maps around hash:/etc/aliases - val = '%s %s %s' % (BEFORE_ALIASES, ETC_ALIASES, AFTER_ALIASES) - analysis.parsed[analysis.isystem] = val - else: - # To the end - analysis.parsed.append(BEFORE_ALIASES) - analysis.parsed.append(AFTER_ALIASES) - # List -> string - return ' '.join(filter(None, analysis.parsed)) - - def check_local_recipient_maps(title=''): diagnosis = models.MainCfDiagnosis(title) lrcpt_maps = postconf.parse_maps_by_key_unsafe('local_recipient_maps') diff --git a/plinth/modules/email_server/audit/models.py b/plinth/modules/email_server/audit/models.py index 173e77630..60083f6e9 100644 --- a/plinth/modules/email_server/audit/models.py +++ b/plinth/modules/email_server/audit/models.py @@ -1,9 +1,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later """Models of the audit module""" -import dataclasses import logging -import typing logger = logging.getLogger(__name__) @@ -207,14 +205,3 @@ class MainCfDiagnosis(Diagnosis): contains an unresolved issue (i.e. an uncorrected key)""" if None in self.advice.values(): raise UnresolvedIssueError('Assertion failed') - - -@dataclasses.dataclass(init=False) -class AliasMapsAnalysis: - parsed = typing.List[str] - ibefore = int - isystem = int - iafter = int - - def __init__(self): - pass diff --git a/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-auth.conf b/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-auth.conf index 53f74960f..b8b027b42 100644 --- a/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-auth.conf +++ b/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-auth.conf @@ -12,15 +12,6 @@ passdb { result_success = return-ok } -userdb { - # UID number lookup (10001@example.com) - driver = ldap - args = /etc/dovecot/freedombox-ldap-userdb-uid.conf.ext - result_failure = continue - result_internalfail = return-fail - result_success = return-ok -} - userdb { driver = ldap args = /etc/dovecot/freedombox-ldap-userdb.conf.ext diff --git a/plinth/modules/email_server/data/etc/dovecot/conf.d/90-freedombox-lmtp.conf b/plinth/modules/email_server/data/etc/dovecot/conf.d/90-freedombox-lmtp.conf index 0b9c3516f..a0f2a3ca4 100644 --- a/plinth/modules/email_server/data/etc/dovecot/conf.d/90-freedombox-lmtp.conf +++ b/plinth/modules/email_server/data/etc/dovecot/conf.d/90-freedombox-lmtp.conf @@ -1,10 +1,6 @@ # Direct edits to this file will be lost! # Manage your settings on Plinth -# Privacy: remove the recipient's UID number from email headers -lmtp_add_received_header = no -lmtp_hdr_delivery_address = original - protocol lmtp { mail_plugins = $mail_plugins sieve } diff --git a/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-userdb-uid.conf.ext b/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-userdb-uid.conf.ext deleted file mode 100644 index e8a047f22..000000000 --- a/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-userdb-uid.conf.ext +++ /dev/null @@ -1,22 +0,0 @@ -# Direct edits to this file will be lost! -# Manage your settings on Plinth https://localhost/plinth/apps/email_server - -uris = ldap://127.0.0.1 -base = dc=thisbox - -user_attrs = \ - =home=%{ldap:homeDirectory}, \ - =uid=%{ldap:uidNumber}, \ - =gid=%{ldap:gidNumber}, \ - =user=%{ldap:uid}, \ - =mail=maildir:~/Maildir:LAYOUT=index - -# Support user lookup by UID number - -user_filter = \ - (&(objectClass=posixAccount)(!(uidNumber=0))(uidNumber=%n)) - -# doveadm -A - -iterate_attrs = =user=%{ldap:uid} -iterate_filter = (objectClass=posixAccount) diff --git a/plinth/modules/email_server/data/etc/postfix/freedombox-username-to-uid-number.cf b/plinth/modules/email_server/data/etc/postfix/freedombox-username-to-uid-number.cf deleted file mode 100644 index 70a59bcee..000000000 --- a/plinth/modules/email_server/data/etc/postfix/freedombox-username-to-uid-number.cf +++ /dev/null @@ -1,10 +0,0 @@ -# This file is managed by FreedomBox - -# Map user name to UID number - -bind = no -server_host = ldap://127.0.0.1 -search_base = dc=thisbox -query_filter = (&(objectClass=posixAccount)(uid=%s)) -result_attribute = uidNumber -result_format = %s@localhost diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index e10955c14..d86ea2925 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -2,7 +2,6 @@ """ Views for the email app. """ -import pwd from django.contrib import messages from django.core.exceptions import ValidationError @@ -147,13 +146,9 @@ class AliasView(FormView): return kwargs - def _get_uid(self): - """Return the UID of the user that made the request.""" - return pwd.getpwnam(self.request.user.username).pw_uid - def _get_current_aliases(self): """Return current list of aliases.""" - return aliases_module.get(self._get_uid()) + return aliases_module.get(self.request.user.username) def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) @@ -185,17 +180,18 @@ class AliasView(FormView): """Handle a valid alias list form operation.""" aliases = form.cleaned_data['aliases'] action = form.cleaned_data['action'] - uid = self._get_uid() + username = self.request.user.username if action == 'delete': - aliases_module.delete(uid, aliases) + aliases_module.delete(username, aliases) elif action == 'disable': - aliases_module.disable(uid, aliases) + aliases_module.disable(username, aliases) elif action == 'enable': - aliases_module.enable(uid, aliases) + aliases_module.enable(username, aliases) def _create_form_valid(self, form): """Handle a valid create alias form operation.""" - aliases_module.put(self._get_uid(), form.cleaned_data['alias']) + username = self.request.user.username + aliases_module.put(username, form.cleaned_data['alias']) class DomainsView(FormView): From cb8c23c28d97a274c6af575c21177d021f91b7f3 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 22 Oct 2021 12:27:34 -0700 Subject: [PATCH 40/74] email_server: Lookup LDAP local recipients via PAM Most modern setups simply use to PAM to lookup local recipients instead of integrating directly with LDAP. libnss-ldapd package that we install and configure connects the password database with LDAP. Anyone then using PAM need not be aware of LDAP integration. This reduces extra configuration and many problems that come along with it. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/audit/ldap.py | 27 ----------------------- plinth/modules/email_server/postconf.py | 4 ---- 2 files changed, 31 deletions(-) diff --git a/plinth/modules/email_server/audit/ldap.py b/plinth/modules/email_server/audit/ldap.py index f7969a1a8..e5e5a760c 100644 --- a/plinth/modules/email_server/audit/ldap.py +++ b/plinth/modules/email_server/audit/ldap.py @@ -68,7 +68,6 @@ def get(): translation_table = [ (check_sasl, _('Postfix-Dovecot SASL integration')), (check_alias_maps, _('Postfix alias maps')), - (check_local_recipient_maps, _('Postfix local recipient maps')), ] results = [] with postconf.mutex.lock_all(): @@ -141,36 +140,10 @@ def fix_alias_maps(diagnosis): diagnosis.apply_changes(postconf.set_many_unsafe) -def check_local_recipient_maps(title=''): - diagnosis = models.MainCfDiagnosis(title) - lrcpt_maps = postconf.parse_maps_by_key_unsafe('local_recipient_maps') - list_modified = False - - # Block mails to system users - # local_recipient_maps must not contain proxy:unix:passwd.byname - ipasswd = list_find(lrcpt_maps, 'proxy:unix:passwd.byname') - if ipasswd >= 0: - diagnosis.critical('Mail to system users (/etc/passwd) possible') - # Propose a fix - lrcpt_maps[ipasswd] = '' - list_modified = True - - if list_modified: - fix = ' '.join(filter(None, lrcpt_maps)) - diagnosis.flag('local_recipient_maps', corrected_value=fix) - - return diagnosis - - -def fix_local_recipient_maps(diagnosis): - diagnosis.apply_changes(postconf.set_many_unsafe) - - def action_set_ulookup(): """Handles email_server -i ldap set_ulookup""" with postconf.mutex.lock_all(): fix_alias_maps(check_alias_maps()) - fix_local_recipient_maps(check_local_recipient_maps()) def list_find(lst, element, start=None, end=None): diff --git a/plinth/modules/email_server/postconf.py b/plinth/modules/email_server/postconf.py index 31826ddf5..047960dea 100644 --- a/plinth/modules/email_server/postconf.py +++ b/plinth/modules/email_server/postconf.py @@ -159,10 +159,6 @@ def parse_maps(raw_value): return value_list -def parse_maps_by_key_unsafe(key): - return parse_maps(get_unsafe(key)) - - def _run(args): """Run process. Capture and return standard output as a string. Raise a RuntimeError on non-zero exit codes""" From afc958a88401e51595b8d86f5ad48f184e71be73 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 22 Oct 2021 17:57:57 -0700 Subject: [PATCH 41/74] email_server: dovecot: Authenticate using PAM instead of LDAP Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../dovecot/conf.d/05-freedombox-auth.conf | 22 +++++-------------- .../dovecot/freedombox-ldap-passdb.conf.ext | 8 ------- .../dovecot/freedombox-ldap-userdb.conf.ext | 20 ----------------- 3 files changed, 5 insertions(+), 45 deletions(-) delete mode 100644 plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-passdb.conf.ext delete mode 100644 plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-userdb.conf.ext diff --git a/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-auth.conf b/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-auth.conf index b8b027b42..a2d3eabcc 100644 --- a/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-auth.conf +++ b/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-auth.conf @@ -1,22 +1,10 @@ # Direct edits to this file will be lost! # Manage your settings on Plinth +# Outlook and Windows Mail works only with LOGIN mechanism, not the standard +# PLAIN: auth_mechanisms = plain login -passdb { - driver = ldap - args = /etc/dovecot/freedombox-ldap-passdb.conf.ext - # Block the default passdb lookup (pam, 10-auth.conf) - result_failure = return-fail - result_internalfail = return-fail - result_success = return-ok -} - -userdb { - driver = ldap - args = /etc/dovecot/freedombox-ldap-userdb.conf.ext - # Block the default userdb lookup (passwd, 10-auth.conf) - result_failure = return-fail - result_internalfail = return-fail - result_success = return-ok -} +# Allow authentication from attempts that provide username as +# user@domain.example. +auth_username_format = %Ln diff --git a/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-passdb.conf.ext b/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-passdb.conf.ext deleted file mode 100644 index 0480c3354..000000000 --- a/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-passdb.conf.ext +++ /dev/null @@ -1,8 +0,0 @@ -# Direct edits to this file will be lost! -# Manage your settings on Plinth - -uris = ldap://127.0.0.1 -base = dc=thisbox - -auth_bind = yes -auth_bind_userdn = uid=%u,ou=users,dc=thisbox diff --git a/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-userdb.conf.ext b/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-userdb.conf.ext deleted file mode 100644 index 29067ba34..000000000 --- a/plinth/modules/email_server/data/etc/dovecot/freedombox-ldap-userdb.conf.ext +++ /dev/null @@ -1,20 +0,0 @@ -# Direct edits to this file will be lost! -# Manage your settings on Plinth - -uris = ldap://127.0.0.1 -base = dc=thisbox - -user_attrs = \ - =home=%{ldap:homeDirectory}, \ - =uid=%{ldap:uidNumber}, \ - =gid=%{ldap:gidNumber}, \ - =mail=maildir:~/Maildir:LAYOUT=index - -# Support user lookup by username - -user_filter = (&(objectClass=posixAccount)(uid=%Ln)(!(uidNumber=0))) - -# For doveadm - -iterate_attrs = =user=%{ldap:uid} -iterate_filter = (objectClass=posixAccount) From 88e372b8f8e10330254be88d1fb5cec17b08c912 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 22 Oct 2021 19:36:53 -0700 Subject: [PATCH 42/74] email_server: dovecot: Don't deliver mail to home directory Delivering mail to home directory is only needed when users are expected to login via terminal and use command line tools for accessing their email. In FreedomBox, we expect users to use GUI tools such as Thunderbird and K-9 Mail to access their mail. So, POP3 and IMAP access sufficient. Not trying to compatible with command line mail tools means that high performance mailbox storage formats can be chosen. This is important to ensure that accessing mail via IMAP is fast. In future, we can consider enabling full text search using Apache Solr. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../dovecot/conf.d/05-freedombox-mail.conf | 25 +++++++++++++++++++ .../dovecot/conf.d/15-freedombox-mail.conf | 16 ++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-mail.conf create mode 100644 plinth/modules/email_server/data/etc/dovecot/conf.d/15-freedombox-mail.conf diff --git a/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-mail.conf b/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-mail.conf new file mode 100644 index 000000000..e3c908d64 --- /dev/null +++ b/plinth/modules/email_server/data/etc/dovecot/conf.d/05-freedombox-mail.conf @@ -0,0 +1,25 @@ +# Direct edits to this file will be lost! +# Manage your settings on Plinth + +# Users in FreedomBox are not expected to access mail by logging into the +# system. Storing the mail in single location instead of home directories and +# with single UID/GID simplifies security reasoning and backup/restore +# operations. +# +# When FreedomBox has multiple domains a user is expected to get a mailbox that +# is same across the domains. Changing an domain name is not uncommon in +# FreedomBox. So, authenticate and store mails based on username only instead of +# including domain names in storage path. +# +# For authdb and userdb, the passwd driver looks up using NSS. In FreedomBox, +# NSS is configured to lookup LDAP with the help of libnss-ldapd. There is no +# need to configure LDAP lookup separately. +# +# Directories are created under /var/mail as necessary by dovecot. Permissions +# for newly created directories are inherited from parent directory. FreedomBox +# will remove all permissions for 'others' from /var/mail to ensure that mail is +# not read by non-root users. +userdb { + driver = passwd + override_fields = home=/var/mail/%Ln uid=mail gid=mail +} diff --git a/plinth/modules/email_server/data/etc/dovecot/conf.d/15-freedombox-mail.conf b/plinth/modules/email_server/data/etc/dovecot/conf.d/15-freedombox-mail.conf new file mode 100644 index 000000000..40bccbce2 --- /dev/null +++ b/plinth/modules/email_server/data/etc/dovecot/conf.d/15-freedombox-mail.conf @@ -0,0 +1,16 @@ +# Direct edits to this file will be lost! +# Manage your settings on Plinth + +# Use sdbox, a format specific to dovecot, for storing mails. The format allows +# better performance with some IMAP queries. When this is combined with Full +# Text Search (FTS), users will get optimal web and desktop mail experience. +# Don't pick mdbox format because is requires regular expunge maintenance. We +# have enabled btrfs filesystem compression by default. +mail_location = sdbox:~/mail + +# We try to deliver all mail using a single UID 'mail' and a single GID 'mail'. +# In Debian, UID of mail user is 8 and GID of mail user is 8 as set in +# /usr/share/base-passwd/{passwd|group}.master. By default first valid UID in +# dovecot is 500. +first_valid_uid = 8 +last_valid_uid = 8 From 8d7bac70c92cb70713afcaa7aba633fea3b1d17d Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Mon, 25 Oct 2021 21:45:49 -0700 Subject: [PATCH 43/74] email_server: Setup /var/mail, drop home setup view Creating home directories is no longer necessary. We store all mail in /var/mail and don't allow use of direct access to mail folder. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/__init__.py | 9 +-- plinth/modules/email_server/audit/home.py | 76 ++++--------------- .../email_server/templates/email_server.html | 4 - .../email_server/templates/my_mail.html | 30 -------- plinth/modules/email_server/urls.py | 2 - plinth/modules/email_server/views.py | 14 ---- 6 files changed, 15 insertions(+), 120 deletions(-) delete mode 100644 plinth/modules/email_server/templates/my_mail.html diff --git a/plinth/modules/email_server/__init__.py b/plinth/modules/email_server/__init__.py index 8926ea019..150d4cdb8 100644 --- a/plinth/modules/email_server/__init__.py +++ b/plinth/modules/email_server/__init__.py @@ -3,7 +3,6 @@ import logging -from django.urls import reverse_lazy from django.utils.translation import gettext_lazy as _ import plinth.app @@ -112,13 +111,6 @@ class EmailServerApp(plinth.app.App): parent_url_name='apps') self.add(menu_item) - shortcut = plinth.frontpage.Shortcut( - 'shortcut_' + self.app_id, name=info.name, - short_description=info.short_description, icon='roundcube', - url=reverse_lazy('email_server:my_mail'), clients=manifest.clients, - login_required=True) - self.add(shortcut) - def _add_daemons(self): for srvname in managed_services: # Construct `listen_ports` parameter for the daemon @@ -170,6 +162,7 @@ def setup(helper, old_version=None): helper.install(packages_bloat, skip_recommends=True) # Setup + helper.call('post', audit.home.repair) helper.call('post', audit.domain.repair) helper.call('post', audit.ldap.repair) helper.call('post', audit.spam.repair) diff --git a/plinth/modules/email_server/audit/home.py b/plinth/modules/email_server/audit/home.py index 161ba325a..dae22f6fc 100644 --- a/plinth/modules/email_server/audit/home.py +++ b/plinth/modules/email_server/audit/home.py @@ -1,70 +1,22 @@ # SPDX-License-Identifier: AGPL-3.0-or-later +"""Privileged actions to setup users' dovecot mail home directory.""" -import logging -import os -import pwd import subprocess -from django.core.exceptions import ValidationError -from django.utils.translation import gettext_lazy as _ - -from plinth.actions import superuser_run -from plinth.errors import ActionError -from plinth.modules.email_server import interproc - -logger = logging.getLogger(__name__) +from plinth import actions -def exists_nam(username): - """Returns True if the user's home directory exists""" - try: - passwd = pwd.getpwnam(username) - except KeyError as e: - raise ValidationError(_('User does not exist')) from e - return _exists(passwd) +def repair(): + """Set correct permissions on /var/mail/ directory. + + For each user, /var/mail/ is the 'dovecot mail home' for that user. + Dovecot creates new directories with the same permissions as the parent + directory. Ensure that 'others' can access /var/mail/. + + """ + actions.superuser_run('email_server', ['home', 'set_up']) -def exists_uid(uid_number): - """Returns True if the user's home directory exists""" - try: - passwd = pwd.getpwuid(uid_number) - except KeyError as e: - raise ValidationError(_('User does not exist')) from e - return _exists(passwd) - - -def _exists(passwd): - return os.path.exists(passwd.pw_dir) - - -def put_nam(username): - """Create a home directory for the user (identified by username)""" - _put('nam', username) - - -def put_uid(uid_number): - """Create a home directory for the user (identified by UID)""" - _put('uid', str(uid_number)) - - -def _put(arg_type, user_info): - try: - superuser_run('email_server', ['home', 'mk', arg_type, user_info]) - except ActionError as e: - raise RuntimeError('Action script failure') from e - - -def action_mk(arg_type, user_info): - if arg_type == 'nam': - passwd = pwd.getpwnam(user_info) - elif arg_type == 'uid': - passwd = pwd.getpwuid(int(user_info)) - else: - raise ValueError('Unknown arg_type') - - args = ['sudo', '-n', '--user=#' + str(passwd.pw_uid)] - args.extend(['/bin/sh', '-c', 'mkdir -p ~']) - completed = subprocess.run(args, capture_output=True, check=False) - if completed.returncode != 0: - interproc.log_subprocess(completed) - raise OSError('Could not create home directory') +def action_set_up(): + """Run chmod on /var/mail to remove all permissions for 'others'.""" + subprocess.run(['chmod', 'o-rwx', '/var/mail'], check=True) diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index 0083d1a1a..9635bbca3 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -19,10 +19,6 @@ {% trans "Manage Spam" %} - - {% trans "Setup My Home" %} - {% trans "Manage Aliases" %} diff --git a/plinth/modules/email_server/templates/my_mail.html b/plinth/modules/email_server/templates/my_mail.html deleted file mode 100644 index c8974aaa5..000000000 --- a/plinth/modules/email_server/templates/my_mail.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "base.html" %} -{% comment %} -# SPDX-License-Identifier: AGPL-3.0-or-later -{% endcomment %} - -{% load i18n %} - -{% block content %} - -

    Setup My Home

    - - {% if not has_homedir %} -

    - {% trans "You do not have a home directory." %} - - {% trans "Create one to begin receiving emails." %} - -

    - -
    - {% csrf_token %} - -
    - {% else %} -

    {% trans "Your home directory is ready to receive emails." %}

    - {% endif %} - -{% endblock %} diff --git a/plinth/modules/email_server/urls.py b/plinth/modules/email_server/urls.py index 3c29b382a..2109efd42 100644 --- a/plinth/modules/email_server/urls.py +++ b/plinth/modules/email_server/urls.py @@ -10,8 +10,6 @@ urlpatterns = [ path('apps/email_server/', views.EmailServerView.as_view(), name='index'), path('apps/email_server/domains', views.DomainsView.as_view(), name='domains'), - path('apps/email_server/my_mail', - non_admin_view(views.MyMailView.as_view()), name='my_mail'), path('apps/email_server/my_aliases', non_admin_view(views.AliasView.as_view()), name='aliases'), path('apps/email_server/config.xml', public(views.XmlView.as_view())), diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index d86ea2925..98aa33b89 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -99,20 +99,6 @@ class EmailServerView(ExceptionsMixin, AppView): plinth.actions.superuser_run('service', ['reload', service]) -class MyMailView(TemplateView): - template_name = 'my_mail.html' - - def get_context_data(self, *args, **kwargs): - context = super().get_context_data(*args, **kwargs) - nam = self.request.user.username - context['has_homedir'] = audit.home.exists_nam(nam) - return context - - def post(self, request): - audit.home.put_nam(request.user.username) - return self.render_to_response(self.get_context_data()) - - class AliasView(FormView): """View to create, list, enable, disable and delete aliases. From d6a93927045718f740cb87d33c98910f19e135df Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 26 Oct 2021 10:21:02 -0700 Subject: [PATCH 44/74] email_server: Use rollback journal for aliases sqlite DB WAL journaling mode is causing problems with postfix unable to open the database despite ownership and permission changes. Default is the DELETE rollback journal mode. The former gives more performance but in our case, writes are very rare and the DB is used mostly just for reads. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/aliases.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plinth/modules/email_server/aliases.py b/plinth/modules/email_server/aliases.py index 85f2910ba..e3c9515f2 100644 --- a/plinth/modules/email_server/aliases.py +++ b/plinth/modules/email_server/aliases.py @@ -102,7 +102,6 @@ def first_setup(): # Create schema if not exists query = ''' -PRAGMA journal_mode=WAL; BEGIN; CREATE TABLE IF NOT EXISTS alias ( name TEXT NOT NULL, From 84ab4b3b3c441276a4f02bd020b1714560aca075 Mon Sep 17 00:00:00 2001 From: Michael Breidenbach Date: Wed, 3 Nov 2021 03:44:23 +0000 Subject: [PATCH 45/74] Translated using Weblate (Swedish) Currently translated at 100.0% (1518 of 1518 strings) --- plinth/locale/sv/LC_MESSAGES/django.po | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 53e643be4..d3e6db4a8 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-25 18:50-0400\n" -"PO-Revision-Date: 2021-10-29 03:43+0000\n" +"PO-Revision-Date: 2021-11-04 02:39+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish \n" @@ -8687,6 +8687,9 @@ msgid "" "conflict with the installation of this app. The following packages will be " "removed if you proceed:" msgstr "" +"Konflikterande paket: Vissa paket som är installerade på " +"systemet är i konflikt med installationen av den här appen. Följande paket " +"tas bort om du fortsätter:" #: plinth/templates/setup.html:71 msgid "Install" From 3043574eb07c12e45b7236411a8caae51c05d683 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Wed, 3 Nov 2021 06:43:41 -0400 Subject: [PATCH 46/74] tests: Use background fixture for each test Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/matrixsynapse/tests/test_functional.py | 7 ++----- plinth/modules/zoph/tests/test_functional.py | 6 ++---- plinth/tests/functional/__init__.py | 12 +++++------- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/plinth/modules/matrixsynapse/tests/test_functional.py b/plinth/modules/matrixsynapse/tests/test_functional.py index 7835368dd..893593ea9 100644 --- a/plinth/modules/matrixsynapse/tests/test_functional.py +++ b/plinth/modules/matrixsynapse/tests/test_functional.py @@ -17,18 +17,15 @@ class TestMatrixSynapseApp(functional.BaseAppTests): has_web = False @pytest.fixture(scope='class', autouse=True) - def fixture_background(self, session_browser): - """Login and install the app.""" + def fixture_setup(self, session_browser): + """Setup the app.""" functional.login(session_browser) functional.set_domain_name(session_browser, 'mydomain.example') functional.install(session_browser, self.app_name) functional.app_select_domain_name(session_browser, self.app_name, 'mydomain.example') - yield - functional.app_disable(session_browser, self.app_name) def test_run_diagnostics(self, session_browser): """Add a short delay before checking diagnostics.""" - functional.app_enable(session_browser, self.app_name) time.sleep(1) super().test_run_diagnostics(session_browser) diff --git a/plinth/modules/zoph/tests/test_functional.py b/plinth/modules/zoph/tests/test_functional.py index bbf56a8f5..4900ce741 100644 --- a/plinth/modules/zoph/tests/test_functional.py +++ b/plinth/modules/zoph/tests/test_functional.py @@ -15,13 +15,11 @@ class TestZophApp(functional.BaseAppTests): has_web = True @pytest.fixture(scope='class', autouse=True) - def fixture_background(self, session_browser): - """Login and install the app.""" + def fixture_setup(self, session_browser): + """Setup the app.""" functional.login(session_browser) functional.install(session_browser, self.app_name) self._zoph_is_setup(session_browser) - yield - functional.app_disable(session_browser, self.app_name) def _zoph_is_setup(self, session_browser): """Click setup button on the setup page.""" diff --git a/plinth/tests/functional/__init__.py b/plinth/tests/functional/__init__.py index 6c9bc73a0..7d4f8e2a0 100644 --- a/plinth/tests/functional/__init__.py +++ b/plinth/tests/functional/__init__.py @@ -616,30 +616,29 @@ class BaseAppTests: if self.has_web: assert not is_available(session_browser, self.app_name) - @pytest.fixture(scope='class', autouse=True) + @pytest.fixture(autouse=True) def fixture_background(self, session_browser): - """Login and install the app.""" + """Login, install, and enable the app.""" login(session_browser) install(session_browser, self.app_name) + app_enable(session_browser, self.app_name) yield + login(session_browser) app_disable(session_browser, self.app_name) def test_enable_disable(self, session_browser): """Test enabling and disabling the app.""" app_disable(session_browser, self.app_name) + self.assert_app_not_running(session_browser) app_enable(session_browser, self.app_name) self.assert_app_running(session_browser) - app_disable(session_browser, self.app_name) - self.assert_app_not_running(session_browser) - def test_run_diagnostics(self, session_browser): """Test that all app diagnostics are passing.""" if not self.check_diagnostics: pytest.skip(f'Skipping diagnostics check for ${self.app_name}.') - app_enable(session_browser, self.app_name) session_browser.find_by_id('id_extra_actions_button').click() submit(session_browser, form_class='form-diagnostics-button') @@ -654,7 +653,6 @@ class BaseAppTests: @pytest.mark.backups def test_backup_restore(self, session_browser): """Test that backup and restore operations work on the app.""" - app_enable(session_browser, self.app_name) backup_create(session_browser, self.app_name, 'test_' + self.app_name) backup_restore(session_browser, self.app_name, 'test_' + self.app_name) self.assert_app_running(session_browser) From 56a756fd99e20804467fe13744203452f939f264 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 18:29:37 -0400 Subject: [PATCH 47/74] bepasty: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/bepasty/tests/test_functional.py | 83 +++++++------------ 1 file changed, 32 insertions(+), 51 deletions(-) diff --git a/plinth/modules/bepasty/tests/test_functional.py b/plinth/modules/bepasty/tests/test_functional.py index 7e17f7ded..78818a54f 100644 --- a/plinth/modules/bepasty/tests/test_functional.py +++ b/plinth/modules/bepasty/tests/test_functional.py @@ -10,68 +10,49 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.bepasty] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'bepasty') - yield - functional.app_disable(session_browser, 'bepasty') +class TestBepastyApp(functional.BaseAppTests): + app_name = 'bepasty' + has_service = False + has_web = True + def test_set_default_permissions_list_and_read_all(self, session_browser): + functional.app_enable(session_browser, 'bepasty') + _logout(session_browser) + _set_default_permissions(session_browser, 'read list') -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'bepasty') + assert _can_list_all(session_browser) - functional.app_enable(session_browser, 'bepasty') - assert functional.is_available(session_browser, 'bepasty') + def test_set_default_permissions_read_files(self, session_browser): + functional.app_enable(session_browser, 'bepasty') + _logout(session_browser) + _set_default_permissions(session_browser, 'read') - functional.app_disable(session_browser, 'bepasty') - assert not functional.is_available(session_browser, 'bepasty') + assert _cannot_list_all(session_browser) + def test_add_password(self, session_browser): + functional.app_enable(session_browser, 'bepasty') + password_added = _add_and_save_password(session_browser) -def test_set_default_permissions_list_and_read_all(session_browser): - functional.app_enable(session_browser, 'bepasty') - _logout(session_browser) - _set_default_permissions(session_browser, 'read list') + assert _can_login(session_browser, password_added) - assert _can_list_all(session_browser) + def test_remove_password(self, session_browser): + functional.app_enable(session_browser, 'bepasty') + password_added = _add_and_save_password(session_browser) + _remove_all_passwords(session_browser) + assert not _can_login(session_browser, password_added) -def test_set_default_permissions_read_files(session_browser): - functional.app_enable(session_browser, 'bepasty') - _logout(session_browser) - _set_default_permissions(session_browser, 'read') + @pytest.mark.backups + def test_backup_and_restore(self, session_browser): + functional.app_enable(session_browser, 'bepasty') + password_added = _add_and_save_password(session_browser) + functional.backup_create(session_browser, 'bepasty', 'test_bepasty') - assert _cannot_list_all(session_browser) + _remove_all_passwords(session_browser) + functional.backup_restore(session_browser, 'bepasty', 'test_bepasty') - -def test_add_password(session_browser): - functional.app_enable(session_browser, 'bepasty') - password_added = _add_and_save_password(session_browser) - - assert _can_login(session_browser, password_added) - - -def test_remove_password(session_browser): - functional.app_enable(session_browser, 'bepasty') - password_added = _add_and_save_password(session_browser) - _remove_all_passwords(session_browser) - - assert not _can_login(session_browser, password_added) - - -@pytest.mark.backups -def test_backup_and_restore(session_browser): - functional.app_enable(session_browser, 'bepasty') - password_added = _add_and_save_password(session_browser) - functional.backup_create(session_browser, 'bepasty', 'test_bepasty') - - _remove_all_passwords(session_browser) - functional.backup_restore(session_browser, 'bepasty', 'test_bepasty') - - assert functional.is_available(session_browser, 'bepasty') - assert _can_login(session_browser, password_added) + assert functional.is_available(session_browser, 'bepasty') + assert _can_login(session_browser, password_added) def _add_and_save_password(session_browser): From d70dd81e2185b3b5da527269b4210e54712a17b7 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 18:38:43 -0400 Subject: [PATCH 48/74] bind: Use BaseAppTests for functional tests Signed-off-by: James Valleroy [sunil: Rename backup/restore test to override base class test] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/bind/tests/test_functional.py | 78 ++++++++------------ 1 file changed, 31 insertions(+), 47 deletions(-) diff --git a/plinth/modules/bind/tests/test_functional.py b/plinth/modules/bind/tests/test_functional.py index 0fe336b0a..fc43e6ab6 100644 --- a/plinth/modules/bind/tests/test_functional.py +++ b/plinth/modules/bind/tests/test_functional.py @@ -4,66 +4,50 @@ Functional, browser based tests for bind app. """ import pytest + from plinth.tests import functional pytestmark = [pytest.mark.system, pytest.mark.bind] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'bind') - yield - functional.app_disable(session_browser, 'bind') +class TestBindApp(functional.BaseAppTests): + app_name = 'bind' + has_service = True + has_web = False + def test_set_forwarders(self, session_browser): + """Test setting forwarders.""" + functional.app_enable(session_browser, 'bind') + functional.set_forwarders(session_browser, '1.1.1.1') -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'bind') + functional.set_forwarders(session_browser, '1.1.1.1 1.0.0.1') + assert functional.get_forwarders(session_browser) == '1.1.1.1 1.0.0.1' - functional.app_enable(session_browser, 'bind') - assert functional.service_is_running(session_browser, 'bind') + def test_enable_disable_dnssec(self, session_browser): + """Test enabling/disabling DNSSEC.""" + functional.app_enable(session_browser, 'bind') + _enable_dnssec(session_browser, False) - functional.app_disable(session_browser, 'bind') - assert functional.service_is_not_running(session_browser, 'bind') + _enable_dnssec(session_browser, True) + assert _get_dnssec(session_browser) + _enable_dnssec(session_browser, False) + assert not _get_dnssec(session_browser) -def test_set_forwarders(session_browser): - """Test setting forwarders.""" - functional.app_enable(session_browser, 'bind') - functional.set_forwarders(session_browser, '1.1.1.1') + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore.""" + functional.app_enable(session_browser, 'bind') + functional.set_forwarders(session_browser, '1.1.1.1') + _enable_dnssec(session_browser, False) + functional.backup_create(session_browser, 'bind', 'test_bind') - functional.set_forwarders(session_browser, '1.1.1.1 1.0.0.1') - assert functional.get_forwarders(session_browser) == '1.1.1.1 1.0.0.1' + functional.set_forwarders(session_browser, '1.0.0.1') + _enable_dnssec(session_browser, True) - -def test_enable_disable_dnssec(session_browser): - """Test enabling/disabling DNSSEC.""" - functional.app_enable(session_browser, 'bind') - _enable_dnssec(session_browser, False) - - _enable_dnssec(session_browser, True) - assert _get_dnssec(session_browser) - - _enable_dnssec(session_browser, False) - assert not _get_dnssec(session_browser) - - -@pytest.mark.backups -def test_backup(session_browser): - """Test backup and restore.""" - functional.app_enable(session_browser, 'bind') - functional.set_forwarders(session_browser, '1.1.1.1') - _enable_dnssec(session_browser, False) - functional.backup_create(session_browser, 'bind', 'test_bind') - - functional.set_forwarders(session_browser, '1.0.0.1') - _enable_dnssec(session_browser, True) - - functional.backup_restore(session_browser, 'bind', 'test_bind') - assert functional.get_forwarders(session_browser) == '1.1.1.1' - assert not _get_dnssec(session_browser) + functional.backup_restore(session_browser, 'bind', 'test_bind') + assert functional.get_forwarders(session_browser) == '1.1.1.1' + assert not _get_dnssec(session_browser) def _enable_dnssec(browser, enable): From 025de63ac2659722709c33a361c5b485df7b93d9 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 19:24:28 -0400 Subject: [PATCH 49/74] calibre: Use BaseAppTests for functional tests Signed-off-by: James Valleroy [sunil: Rename the backup/restore test to override base class] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- .../modules/calibre/tests/test_functional.py | 80 +++++++------------ 1 file changed, 31 insertions(+), 49 deletions(-) diff --git a/plinth/modules/calibre/tests/test_functional.py b/plinth/modules/calibre/tests/test_functional.py index ea0d5449e..fabd485b7 100644 --- a/plinth/modules/calibre/tests/test_functional.py +++ b/plinth/modules/calibre/tests/test_functional.py @@ -13,63 +13,45 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.sso, pytest.mark.calibre] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'calibre') - yield - functional.app_disable(session_browser, 'calibre') +class TestCalibreApp(functional.BaseAppTests): + app_name = 'calibre' + has_service = True + has_web = True + def test_add_delete_library(self, session_browser): + """Test adding/deleting a new library.""" + functional.app_enable(session_browser, 'calibre') + _delete_library(session_browser, 'FunctionalTest', True) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'calibre') + _add_library(session_browser, 'FunctionalTest') + assert _is_library_available(session_browser, 'FunctionalTest') - functional.app_enable(session_browser, 'calibre') - assert functional.service_is_running(session_browser, 'calibre') - assert functional.is_available(session_browser, 'calibre') + _delete_library(session_browser, 'FunctionalTest') + assert not _is_library_available(session_browser, 'FunctionalTest') - functional.app_disable(session_browser, 'calibre') - assert not functional.service_is_running(session_browser, 'calibre') - assert not functional.is_available(session_browser, 'calibre') + def test_add_delete_book(self, session_browser): + """Test adding/delete book in the library.""" + functional.app_enable(session_browser, 'calibre') + _add_library(session_browser, 'FunctionalTest') + _delete_book(session_browser, 'FunctionalTest', 'sample.txt', True) - -def test_add_delete_library(session_browser): - """Test adding/deleting a new library.""" - functional.app_enable(session_browser, 'calibre') - _delete_library(session_browser, 'FunctionalTest', True) - - _add_library(session_browser, 'FunctionalTest') - assert _is_library_available(session_browser, 'FunctionalTest') - - _delete_library(session_browser, 'FunctionalTest') - assert not _is_library_available(session_browser, 'FunctionalTest') - - -def test_add_delete_book(session_browser): - """Test adding/delete book in the library.""" - functional.app_enable(session_browser, 'calibre') - _add_library(session_browser, 'FunctionalTest') - _delete_book(session_browser, 'FunctionalTest', 'sample.txt', True) - - _add_book(session_browser, 'FunctionalTest', 'sample.txt') - assert _is_book_available(session_browser, 'FunctionalTest', 'sample.txt') - - _delete_book(session_browser, 'FunctionalTest', 'sample.txt') - assert not _is_book_available(session_browser, 'FunctionalTest', + _add_book(session_browser, 'FunctionalTest', 'sample.txt') + assert _is_book_available(session_browser, 'FunctionalTest', 'sample.txt') + _delete_book(session_browser, 'FunctionalTest', 'sample.txt') + assert not _is_book_available(session_browser, 'FunctionalTest', + 'sample.txt') -@pytest.mark.backups -def test_backup(session_browser): - """Test backing up and restoring.""" - functional.app_enable(session_browser, 'calibre') - _add_library(session_browser, 'FunctionalTest') - functional.backup_create(session_browser, 'calibre', 'test_calibre') - _delete_library(session_browser, 'FunctionalTest') - functional.backup_restore(session_browser, 'calibre', 'test_calibre') - assert _is_library_available(session_browser, 'FunctionalTest') + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backing up and restoring.""" + functional.app_enable(session_browser, 'calibre') + _add_library(session_browser, 'FunctionalTest') + functional.backup_create(session_browser, 'calibre', 'test_calibre') + _delete_library(session_browser, 'FunctionalTest') + functional.backup_restore(session_browser, 'calibre', 'test_calibre') + assert _is_library_available(session_browser, 'FunctionalTest') def _add_library(browser, name): From e148316c25dd521ea5a1c03a1d00f0bf21d70cbc Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 19:57:08 -0400 Subject: [PATCH 50/74] deluge: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/deluge/tests/test_functional.py | 91 ++++++++----------- 1 file changed, 36 insertions(+), 55 deletions(-) diff --git a/plinth/modules/deluge/tests/test_functional.py b/plinth/modules/deluge/tests/test_functional.py index 3029a9ce8..5261170fd 100644 --- a/plinth/modules/deluge/tests/test_functional.py +++ b/plinth/modules/deluge/tests/test_functional.py @@ -12,69 +12,50 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.deluge] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'deluge') - yield - functional.app_disable(session_browser, 'deluge') +class TestDelugeApp(functional.BaseAppTests): + app_name = 'deluge' + has_service = True + has_web = True + def test_bittorrent_group(self, session_browser): + """Test if only users in bit-torrent group can access Deluge.""" + functional.app_enable(session_browser, 'deluge') + if not functional.user_exists(session_browser, 'delugeuser'): + functional.create_user(session_browser, 'delugeuser', + groups=['bit-torrent']) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'deluge') + if not functional.user_exists(session_browser, 'nogroupuser'): + functional.create_user(session_browser, 'nogroupuser') - functional.app_enable(session_browser, 'deluge') - assert functional.service_is_running(session_browser, 'deluge') - assert functional.is_available(session_browser, 'deluge') + functional.login_with_account(session_browser, functional.base_url, + 'delugeuser') + assert functional.is_available(session_browser, 'deluge') - functional.app_disable(session_browser, 'deluge') - assert functional.service_is_not_running(session_browser, 'deluge') - assert not functional.is_available(session_browser, 'deluge') + functional.login_with_account(session_browser, functional.base_url, + 'nogroupuser') + assert not functional.is_available(session_browser, 'deluge') + functional.login(session_browser) -def test_bittorrent_group(session_browser): - """Test if only users in bit-torrent group can access Deluge.""" - functional.app_enable(session_browser, 'deluge') - if not functional.user_exists(session_browser, 'delugeuser'): - functional.create_user(session_browser, 'delugeuser', - groups=['bit-torrent']) + def test_upload_torrent(self, session_browser): + """Test uploading a torrent.""" + functional.app_enable(session_browser, 'deluge') + _remove_all_torrents(session_browser) + _upload_sample_torrent(session_browser) + assert _get_number_of_torrents(session_browser) == 1 - if not functional.user_exists(session_browser, 'nogroupuser'): - functional.create_user(session_browser, 'nogroupuser') + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore.""" + functional.app_enable(session_browser, 'deluge') + _remove_all_torrents(session_browser) + _upload_sample_torrent(session_browser) + functional.backup_create(session_browser, 'deluge', 'test_deluge') - functional.login_with_account(session_browser, functional.base_url, - 'delugeuser') - assert functional.is_available(session_browser, 'deluge') - - functional.login_with_account(session_browser, functional.base_url, - 'nogroupuser') - assert not functional.is_available(session_browser, 'deluge') - - functional.login(session_browser) - - -def test_upload_torrent(session_browser): - """Test uploading a torrent.""" - functional.app_enable(session_browser, 'deluge') - _remove_all_torrents(session_browser) - _upload_sample_torrent(session_browser) - assert _get_number_of_torrents(session_browser) == 1 - - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore.""" - functional.app_enable(session_browser, 'deluge') - _remove_all_torrents(session_browser) - _upload_sample_torrent(session_browser) - functional.backup_create(session_browser, 'deluge', 'test_deluge') - - _remove_all_torrents(session_browser) - functional.backup_restore(session_browser, 'deluge', 'test_deluge') - assert functional.service_is_running(session_browser, 'deluge') - assert _get_number_of_torrents(session_browser) == 1 + _remove_all_torrents(session_browser) + functional.backup_restore(session_browser, 'deluge', 'test_deluge') + assert functional.service_is_running(session_browser, 'deluge') + assert _get_number_of_torrents(session_browser) == 1 def _get_active_window_title(browser): From 05ae605cf9adf04d0b15549c2d53ee6a029656bc Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 20:06:12 -0400 Subject: [PATCH 51/74] ejabberd: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/ejabberd/tests/test_functional.py | 56 +++++++------------ 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/plinth/modules/ejabberd/tests/test_functional.py b/plinth/modules/ejabberd/tests/test_functional.py index 29b4fb068..1f1663a31 100644 --- a/plinth/modules/ejabberd/tests/test_functional.py +++ b/plinth/modules/ejabberd/tests/test_functional.py @@ -12,47 +12,31 @@ pytestmark = [pytest.mark.apps, pytest.mark.ejabberd] # TODO Check domain name display -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'ejabberd') - yield - functional.app_disable(session_browser, 'ejabberd') +class TestEjabberdApp(functional.BaseAppTests): + app_name = 'ejabberd' + has_service = True + has_web = False + def test_message_archive_management(self, session_browser): + """Test enabling message archive management.""" + functional.app_enable(session_browser, 'ejabberd') + _enable_message_archive_management(session_browser) + assert functional.service_is_running(session_browser, 'ejabberd') -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'ejabberd') + _disable_message_archive_management(session_browser) + assert functional.service_is_running(session_browser, 'ejabberd') - functional.app_enable(session_browser, 'ejabberd') - assert functional.service_is_running(session_browser, 'ejabberd') + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of app data.""" + functional.app_enable(session_browser, 'ejabberd') + _jsxc_add_contact(session_browser) + functional.backup_create(session_browser, 'ejabberd', 'test_ejabberd') - functional.app_disable(session_browser, 'ejabberd') - assert functional.service_is_not_running(session_browser, 'ejabberd') + _jsxc_delete_contact(session_browser) + functional.backup_restore(session_browser, 'ejabberd', 'test_ejabberd') - -def test_message_archive_management(session_browser): - """Test enabling message archive management.""" - functional.app_enable(session_browser, 'ejabberd') - _enable_message_archive_management(session_browser) - assert functional.service_is_running(session_browser, 'ejabberd') - - _disable_message_archive_management(session_browser) - assert functional.service_is_running(session_browser, 'ejabberd') - - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of app data.""" - functional.app_enable(session_browser, 'ejabberd') - _jsxc_add_contact(session_browser) - functional.backup_create(session_browser, 'ejabberd', 'test_ejabberd') - - _jsxc_delete_contact(session_browser) - functional.backup_restore(session_browser, 'ejabberd', 'test_ejabberd') - - _jsxc_assert_has_contact(session_browser) + _jsxc_assert_has_contact(session_browser) def _enable_message_archive_management(browser): From 55fd53a18c698121edad260be052c4aaac828862 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 20:23:38 -0400 Subject: [PATCH 52/74] gitweb: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/gitweb/tests/test_functional.py | 182 ++++++++---------- 1 file changed, 81 insertions(+), 101 deletions(-) diff --git a/plinth/modules/gitweb/tests/test_functional.py b/plinth/modules/gitweb/tests/test_functional.py index 16fdfe43d..9519963a2 100644 --- a/plinth/modules/gitweb/tests/test_functional.py +++ b/plinth/modules/gitweb/tests/test_functional.py @@ -17,121 +17,101 @@ pytestmark = [pytest.mark.apps, pytest.mark.gitweb] _default_url = functional.config['DEFAULT']['url'] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'gitweb') - functional.app_enable(session_browser, 'gitweb') - yield - functional.login(session_browser) - functional.app_disable(session_browser, 'gitweb') +class TestGitwebApp(functional.BaseAppTests): + app_name = 'gitweb' + has_service = False + has_web = True + def test_all_repos_private(self, session_browser): + """Test repo accessability when all repos are private.""" + _create_repo(session_browser, 'Test-repo', 'private', + ok_if_exists=True) + _set_all_repos_private(session_browser) + if not functional.user_exists(session_browser, 'gitweb_user'): + functional.create_user(session_browser, 'gitweb_user', + groups=['git-access']) + if not functional.user_exists(session_browser, 'nogroupuser'): + functional.create_user(session_browser, 'nogroupuser', groups=[]) -@pytest.fixture(autouse=True) -def fixture_login(session_browser): - """Login fixture.""" - functional.login(session_browser) - functional.app_enable(session_browser, 'gitweb') - yield + functional.login_with_account(session_browser, functional.base_url, + 'gitweb_user') + assert functional.is_available(session_browser, 'gitweb') + assert len(functional.find_on_front_page(session_browser, + 'gitweb')) == 1 + functional.login_with_account(session_browser, functional.base_url, + 'nogroupuser') + assert not functional.is_available(session_browser, 'gitweb') + assert len(functional.find_on_front_page(session_browser, + 'gitweb')) == 0 -def test_all_repos_private(session_browser): - """Test repo accessability when all repos are private.""" - _create_repo(session_browser, 'Test-repo', 'private', ok_if_exists=True) - _set_all_repos_private(session_browser) - if not functional.user_exists(session_browser, 'gitweb_user'): - functional.create_user(session_browser, 'gitweb_user', - groups=['git-access']) - if not functional.user_exists(session_browser, 'nogroupuser'): - functional.create_user(session_browser, 'nogroupuser', groups=[]) + functional.logout(session_browser) + functional.access_url(session_browser, 'gitweb') + assert functional.is_login_prompt(session_browser) + assert len(functional.find_on_front_page(session_browser, + 'gitweb')) == 0 - functional.login_with_account(session_browser, functional.base_url, - 'gitweb_user') - assert functional.is_available(session_browser, 'gitweb') - assert len(functional.find_on_front_page(session_browser, 'gitweb')) == 1 + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backing up and restoring.""" + _create_repo(session_browser, 'Test-repo', ok_if_exists=True) + functional.backup_create(session_browser, 'gitweb', 'test_gitweb') + _delete_repo(session_browser, 'Test-repo') + functional.backup_restore(session_browser, 'gitweb', 'test_gitweb') + assert _repo_exists(session_browser, 'Test-repo') + assert functional.is_available(session_browser, 'gitweb') - functional.login_with_account(session_browser, functional.base_url, - 'nogroupuser') - assert not functional.is_available(session_browser, 'gitweb') - assert len(functional.find_on_front_page(session_browser, 'gitweb')) == 0 + @pytest.mark.parametrize('access', ['public', 'private']) + @pytest.mark.parametrize('repo_name', ['Test-repo', 'Test-repo.git']) + def test_create_delete_repo(self, session_browser, access, repo_name): + """Test creating and deleting a repo and accessing with a git + client.""" + _delete_repo(session_browser, repo_name, ignore_missing=True) + _create_repo(session_browser, repo_name, access) - functional.logout(session_browser) - functional.access_url(session_browser, 'gitweb') - assert functional.is_login_prompt(session_browser) - assert len(functional.find_on_front_page(session_browser, 'gitweb')) == 0 + assert _repo_exists(session_browser, repo_name, access) + assert _site_repo_exists(session_browser, repo_name) + if access == "public": + assert _repo_is_readable(repo_name) + else: + assert not _repo_is_readable(repo_name) -@pytest.mark.backups -def test_backup(session_browser): - """Test backing up and restoring.""" - _create_repo(session_browser, 'Test-repo', ok_if_exists=True) - functional.backup_create(session_browser, 'gitweb', 'test_gitweb') - _delete_repo(session_browser, 'Test-repo') - functional.backup_restore(session_browser, 'gitweb', 'test_gitweb') - assert _repo_exists(session_browser, 'Test-repo') - assert functional.is_available(session_browser, 'gitweb') + assert not _repo_is_writable(repo_name) + assert _repo_is_readable(repo_name, with_auth=True) + assert _repo_is_writable(repo_name, with_auth=True) + _delete_repo(session_browser, repo_name) + assert not _repo_exists(session_browser, repo_name) -@pytest.mark.parametrize('access', ['public', 'private']) -@pytest.mark.parametrize('repo_name', ['Test-repo', 'Test-repo.git']) -def test_create_delete_repo(session_browser, access, repo_name): - """Test creating and deleting a repo and accessing with a git client.""" - _delete_repo(session_browser, repo_name, ignore_missing=True) - _create_repo(session_browser, repo_name, access) + def test_both_private_and_public_repo_exist(self, session_browser): + """Tests when both private and public repo exist.""" + _create_repo(session_browser, 'Test-repo', 'public', True) + _create_repo(session_browser, 'Test-repo-private', 'private', True) - assert _repo_exists(session_browser, repo_name, access) - assert _site_repo_exists(session_browser, repo_name) + functional.logout(session_browser) + assert _site_repo_exists(session_browser, 'Test-repo') + assert not _site_repo_exists(session_browser, 'Test-repo-private') - if access == "public": - assert _repo_is_readable(repo_name) - else: - assert not _repo_is_readable(repo_name) + def test_edit_repo_metadata(self, session_browser): + """Test edit repo metadata.""" + _create_repo(session_browser, 'Test-repo2', 'public', + ok_if_exists=True) + _delete_repo(session_browser, 'Test-repo', ignore_missing=True) + repo_metadata = { + 'name': 'Test-repo', + 'description': 'Test Description', + 'owner': 'Test Owner', + 'access': 'private', + } + _edit_repo_metadata(session_browser, 'Test-repo2', repo_metadata) + assert _get_repo_metadata(session_browser, + "Test-repo") == repo_metadata - assert not _repo_is_writable(repo_name) - assert _repo_is_readable(repo_name, with_auth=True) - assert _repo_is_writable(repo_name, with_auth=True) - - _delete_repo(session_browser, repo_name) - assert not _repo_exists(session_browser, repo_name) - - -def test_both_private_and_public_repo_exist(session_browser): - """Tests when both private and public repo exist.""" - _create_repo(session_browser, 'Test-repo', 'public', True) - _create_repo(session_browser, 'Test-repo-private', 'private', True) - - functional.logout(session_browser) - assert _site_repo_exists(session_browser, 'Test-repo') - assert not _site_repo_exists(session_browser, 'Test-repo-private') - - -def test_edit_repo_metadata(session_browser): - """Test edit repo metadata.""" - _create_repo(session_browser, 'Test-repo2', 'public', ok_if_exists=True) - _delete_repo(session_browser, 'Test-repo', ignore_missing=True) - repo_metadata = { - 'name': 'Test-repo', - 'description': 'Test Description', - 'owner': 'Test Owner', - 'access': 'private', - } - _edit_repo_metadata(session_browser, 'Test-repo2', repo_metadata) - assert _get_repo_metadata(session_browser, "Test-repo") == repo_metadata - - _create_branch('Test-repo', 'branch1') - _set_default_branch(session_browser, 'Test-repo', 'branch1') - assert _get_gitweb_site_default_repo_branch(session_browser, - 'Test-repo') == 'branch1' - - -def test_enable_disable(session_browser): - """Test enabling and disabling the app.""" - functional.app_disable(session_browser, 'gitweb') - assert not functional.is_available(session_browser, 'gitweb') - - functional.app_enable(session_browser, 'gitweb') - assert functional.is_available(session_browser, 'gitweb') + _create_branch('Test-repo', 'branch1') + _set_default_branch(session_browser, 'Test-repo', 'branch1') + assert _get_gitweb_site_default_repo_branch(session_browser, + 'Test-repo') == 'branch1' def _create_local_repo(path): From 1b1d81e7876303705d96103d57e1285d61187ecb Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 20:33:57 -0400 Subject: [PATCH 53/74] ikiwiki: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/ikiwiki/tests/test_functional.py | 40 ++++++------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/plinth/modules/ikiwiki/tests/test_functional.py b/plinth/modules/ikiwiki/tests/test_functional.py index 1c936d73d..6d68089db 100644 --- a/plinth/modules/ikiwiki/tests/test_functional.py +++ b/plinth/modules/ikiwiki/tests/test_functional.py @@ -9,36 +9,22 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.ikiwiki] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'ikiwiki') - yield - functional.app_disable(session_browser, 'ikiwiki') +class TestIkiwikiApp(functional.BaseAppTests): + app_name = 'ikiwiki' + has_service = False + has_web = True + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of app data.""" + functional.app_enable(session_browser, 'ikiwiki') + _create_wiki_if_needed(session_browser) + functional.backup_create(session_browser, 'ikiwiki', 'test_ikiwiki') -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'ikiwiki') + _delete_wiki(session_browser) + functional.backup_restore(session_browser, 'ikiwiki', 'test_ikiwiki') - functional.app_enable(session_browser, 'ikiwiki') - assert functional.is_available(session_browser, 'ikiwiki') - - functional.app_disable(session_browser, 'ikiwiki') - assert not functional.is_available(session_browser, 'ikiwiki') - - -@pytest.mark.backups -def test_backup_and_restore(session_browser): - functional.app_enable(session_browser, 'ikiwiki') - _create_wiki_if_needed(session_browser) - functional.backup_create(session_browser, 'ikiwiki', 'test_ikiwiki') - - _delete_wiki(session_browser) - functional.backup_restore(session_browser, 'ikiwiki', 'test_ikiwiki') - - assert _wiki_exists(session_browser) + assert _wiki_exists(session_browser) def _create_wiki_if_needed(browser): From 723546502ec76b980cb5f3bb35060c0efd4c24bb Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 20:42:09 -0400 Subject: [PATCH 54/74] mediawiki: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../mediawiki/tests/test_functional.py | 145 ++++++++---------- 1 file changed, 62 insertions(+), 83 deletions(-) diff --git a/plinth/modules/mediawiki/tests/test_functional.py b/plinth/modules/mediawiki/tests/test_functional.py index 96039db3b..4382176eb 100644 --- a/plinth/modules/mediawiki/tests/test_functional.py +++ b/plinth/modules/mediawiki/tests/test_functional.py @@ -14,105 +14,84 @@ from plinth.tests.functional import config pytestmark = [pytest.mark.apps, pytest.mark.mediawiki] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'mediawiki') - _set_server_url(session_browser) - yield - functional.app_disable(session_browser, 'mediawiki') +class TestMediawikiApp(functional.BaseAppTests): + app_name = 'mediawiki' + has_service = False + has_web = True + @pytest.fixture(scope='class', autouse=True) + def fixture_setup(self, session_browser): + """Setup the app.""" + functional.login(session_browser) + functional.install(session_browser, 'mediawiki') + _set_server_url(session_browser) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'mediawiki') + def test_public_registrations(self, session_browser): + """Test enabling public registrations.""" + _enable_public_registrations(session_browser) + _verify_create_account_link(session_browser) - functional.app_enable(session_browser, 'mediawiki') - assert functional.is_available(session_browser, 'mediawiki') + _disable_public_registrations(session_browser) + _verify_no_create_account_link(session_browser) - functional.app_disable(session_browser, 'mediawiki') - assert not functional.is_available(session_browser, 'mediawiki') + def test_private_mode(self, session_browser): + """Test enabling private mode.""" + _enable_private_mode(session_browser) + _verify_no_create_account_link(session_browser) + _verify_no_anonymous_reads_edits_link(session_browser) + _disable_private_mode(session_browser) + _verify_anonymous_reads_edits_link(session_browser) -def test_public_registrations(session_browser): - """Test enabling public registrations.""" - functional.app_enable(session_browser, 'mediawiki') - _enable_public_registrations(session_browser) - _verify_create_account_link(session_browser) + def test_private_mode_public_registrations(self, session_browser): + """Test interactive between private mode and public registrations. - _disable_public_registrations(session_browser) - _verify_no_create_account_link(session_browser) + Requires JS.""" + # Enabling private mode disables public registrations + _enable_public_registrations(session_browser) + _enable_private_mode(session_browser) + _verify_no_create_account_link(session_browser) + # Enabling public registrations disables private mode + _enable_private_mode(session_browser) + _enable_public_registrations(session_browser) + _verify_create_account_link(session_browser) -def test_private_mode(session_browser): - """Test enabling private mode.""" - functional.app_enable(session_browser, 'mediawiki') - _enable_private_mode(session_browser) - _verify_no_create_account_link(session_browser) - _verify_no_anonymous_reads_edits_link(session_browser) + def test_upload_files(self, session_browser): + """Test that logged in user can see upload files option. - _disable_private_mode(session_browser) - _verify_anonymous_reads_edits_link(session_browser) + Requires JS.""" + _set_admin_password(session_browser, 'whatever123') + _login_with_credentials(session_browser, 'admin', 'whatever123') + def test_upload_images(self, session_browser): + """Test uploading an image.""" + _upload_image(session_browser, 'admin', 'whatever123', 'noise.png') + assert _image_exists(session_browser, 'Noise.png') -def test_private_mode_public_registrations(session_browser): - """Test interactive between private mode and public registrations. + def test_upload_svg_image(self, session_browser): + """Test uploading an SVG image.""" + _upload_image(session_browser, 'admin', 'whatever123', + 'apps-background.svg') + assert _image_exists(session_browser, 'Apps-background.svg') - Requires JS.""" - functional.app_enable(session_browser, 'mediawiki') + def test_backup_restore(self, session_browser): + """Test backup and restore of pages and images.""" + if not _image_exists(session_browser, 'Noise.png'): + _upload_image(session_browser, 'admin', 'whatever123', 'Noise.png') - # Enabling private mode disables public registrations - _enable_public_registrations(session_browser) - _enable_private_mode(session_browser) - _verify_no_create_account_link(session_browser) + functional.backup_create(session_browser, 'mediawiki', + 'test_mediawiki') - # Enabling public registrations disables private mode - _enable_private_mode(session_browser) - _enable_public_registrations(session_browser) - _verify_create_account_link(session_browser) + _enable_public_registrations(session_browser) + _delete_image(session_browser, 'admin', 'whatever123', 'Noise.png') + _delete_main_page(session_browser, 'admin', 'whatever123') + functional.backup_restore(session_browser, 'mediawiki', + 'test_mediawiki') - -def test_upload_files(session_browser): - """Test that logged in user can see upload files option. - - Requires JS.""" - functional.app_enable(session_browser, 'mediawiki') - _set_admin_password(session_browser, 'whatever123') - _login_with_credentials(session_browser, 'admin', 'whatever123') - - -def test_upload_images(session_browser): - """Test uploading an image.""" - functional.app_enable(session_browser, 'mediawiki') - _upload_image(session_browser, 'admin', 'whatever123', 'noise.png') - assert _image_exists(session_browser, 'Noise.png') - - -def test_upload_svg_image(session_browser): - """Test uploading an SVG image.""" - functional.app_enable(session_browser, 'mediawiki') - _upload_image(session_browser, 'admin', 'whatever123', - 'apps-background.svg') - assert _image_exists(session_browser, 'Apps-background.svg') - - -def test_backup_restore(session_browser): - """Test backup and restore of pages and images.""" - functional.app_enable(session_browser, 'mediawiki') - if not _image_exists(session_browser, 'Noise.png'): - _upload_image(session_browser, 'admin', 'whatever123', 'Noise.png') - - functional.backup_create(session_browser, 'mediawiki', 'test_mediawiki') - - _enable_public_registrations(session_browser) - _delete_image(session_browser, 'admin', 'whatever123', 'Noise.png') - _delete_main_page(session_browser, 'admin', 'whatever123') - functional.backup_restore(session_browser, 'mediawiki', 'test_mediawiki') - - assert _has_main_page(session_browser) - assert _image_exists(session_browser, 'Noise.png') - _verify_create_account_link(session_browser) + assert _has_main_page(session_browser) + assert _image_exists(session_browser, 'Noise.png') + _verify_create_account_link(session_browser) def _enable_public_registrations(browser): From 8210935e49ea0120724ce62f7f079fd37b1d6f9a Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 20:45:23 -0400 Subject: [PATCH 55/74] mldonkey: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/mldonkey/tests/test_functional.py | 58 +++++++------------ 1 file changed, 20 insertions(+), 38 deletions(-) diff --git a/plinth/modules/mldonkey/tests/test_functional.py b/plinth/modules/mldonkey/tests/test_functional.py index 1a439a37d..d87db3a19 100644 --- a/plinth/modules/mldonkey/tests/test_functional.py +++ b/plinth/modules/mldonkey/tests/test_functional.py @@ -9,48 +9,30 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.mldonkey, pytest.mark.sso] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'mldonkey') - yield - functional.app_disable(session_browser, 'mldonkey') +class TestMldonkeyApp(functional.BaseAppTests): + app_name = 'mldonkey' + has_service = True + has_web = True + def test_upload(self, session_browser): + """Test uploading an ed2k file to mldonkey.""" + functional.app_enable(session_browser, 'mldonkey') + _remove_all_ed2k_files(session_browser) + _upload_sample_ed2k_file(session_browser) + assert _get_number_of_ed2k_files(session_browser) == 1 -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'mldonkey') + def test_backup_restore(self, session_browser): + """Test backup and restore of ed2k files.""" + functional.app_enable(session_browser, 'mldonkey') + _remove_all_ed2k_files(session_browser) + _upload_sample_ed2k_file(session_browser) + functional.backup_create(session_browser, 'mldonkey', 'test_mldonkey') - functional.app_enable(session_browser, 'mldonkey') - assert functional.service_is_running(session_browser, 'mldonkey') - assert functional.is_available(session_browser, 'mldonkey') + _remove_all_ed2k_files(session_browser) + functional.backup_restore(session_browser, 'mldonkey', 'test_mldonkey') - functional.app_disable(session_browser, 'mldonkey') - assert functional.service_is_not_running(session_browser, 'mldonkey') - assert not functional.is_available(session_browser, 'mldonkey') - - -def test_upload(session_browser): - """Test uploading an ed2k file to mldonkey.""" - functional.app_enable(session_browser, 'mldonkey') - _remove_all_ed2k_files(session_browser) - _upload_sample_ed2k_file(session_browser) - assert _get_number_of_ed2k_files(session_browser) == 1 - - -def test_backup_restore(session_browser): - """Test backup and restore of ed2k files.""" - functional.app_enable(session_browser, 'mldonkey') - _remove_all_ed2k_files(session_browser) - _upload_sample_ed2k_file(session_browser) - functional.backup_create(session_browser, 'mldonkey', 'test_mldonkey') - - _remove_all_ed2k_files(session_browser) - functional.backup_restore(session_browser, 'mldonkey', 'test_mldonkey') - - assert functional.service_is_running(session_browser, 'mldonkey') - assert _get_number_of_ed2k_files(session_browser) == 1 + assert functional.service_is_running(session_browser, 'mldonkey') + assert _get_number_of_ed2k_files(session_browser) == 1 def _submit_command(browser, command): From 9b58f4f031a9ffc8023518967499464a6982d5bb Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 20:57:12 -0400 Subject: [PATCH 56/74] openvpn: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/openvpn/tests/test_functional.py | 73 +++++++------------ 1 file changed, 28 insertions(+), 45 deletions(-) diff --git a/plinth/modules/openvpn/tests/test_functional.py b/plinth/modules/openvpn/tests/test_functional.py index 10d13ffdb..59285c245 100644 --- a/plinth/modules/openvpn/tests/test_functional.py +++ b/plinth/modules/openvpn/tests/test_functional.py @@ -12,58 +12,41 @@ base_url = functional.config['DEFAULT']['URL'] shortcut_href = '?selected=shortcut-openvpn' -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'openvpn') - yield - functional.app_disable(session_browser, 'openvpn') +class TestOpenvpnApp(functional.BaseAppTests): + app_name = 'openvpn' + has_service = True + has_web = False + def test_download_profile(self, session_browser): + """Test that OpenVPN profile is downloadable.""" + functional.app_enable(session_browser, 'openvpn') + _download_profile(session_browser) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'openvpn') + def test_user_group(self, session_browser): + """Test that only users in vpn group have access.""" + functional.app_enable(session_browser, 'openvpn') + if not functional.user_exists(session_browser, 'vpnuser'): + functional.create_user(session_browser, 'vpnuser', groups=['vpn']) + if not functional.user_exists(session_browser, 'nonvpnuser'): + functional.create_user(session_browser, 'nonvpnuser', groups=[]) - functional.app_enable(session_browser, 'openvpn') - assert functional.service_is_running(session_browser, 'openvpn') + functional.login_with_account(session_browser, base_url, 'vpnuser') + _download_profile(session_browser) - functional.app_disable(session_browser, 'openvpn') - assert functional.service_is_not_running(session_browser, 'openvpn') + functional.login_with_account(session_browser, base_url, 'nonvpnuser') + _not_on_front_page(session_browser) + functional.login(session_browser) -def test_download_profile(session_browser): - """Test that OpenVPN profile is downloadable.""" - functional.app_enable(session_browser, 'openvpn') - _download_profile(session_browser) + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of app data.""" + functional.app_enable(session_browser, 'openvpn') + profile = _download_profile(session_browser) + functional.backup_create(session_browser, 'openvpn', 'test_openvpn') - -def test_user_group(session_browser): - """Test that only users in vpn group have access.""" - functional.app_enable(session_browser, 'openvpn') - if not functional.user_exists(session_browser, 'vpnuser'): - functional.create_user(session_browser, 'vpnuser', groups=['vpn']) - if not functional.user_exists(session_browser, 'nonvpnuser'): - functional.create_user(session_browser, 'nonvpnuser', groups=[]) - - functional.login_with_account(session_browser, base_url, 'vpnuser') - _download_profile(session_browser) - - functional.login_with_account(session_browser, base_url, 'nonvpnuser') - _not_on_front_page(session_browser) - - functional.login(session_browser) - - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of app data.""" - functional.app_enable(session_browser, 'openvpn') - profile = _download_profile(session_browser) - functional.backup_create(session_browser, 'openvpn', 'test_openvpn') - - functional.backup_restore(session_browser, 'openvpn', 'test_openvpn') - _profile_download_compare(session_browser, profile) + functional.backup_restore(session_browser, 'openvpn', 'test_openvpn') + _profile_download_compare(session_browser, profile) def _not_on_front_page(session_browser): From 8033ec836866bdcf398695a58d5206423a8a70dd Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 21:08:56 -0400 Subject: [PATCH 57/74] pagekite: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/pagekite/tests/test_functional.py | 74 ++++++++----------- 1 file changed, 29 insertions(+), 45 deletions(-) diff --git a/plinth/modules/pagekite/tests/test_functional.py b/plinth/modules/pagekite/tests/test_functional.py index 64fd8cf92..6c04074b2 100644 --- a/plinth/modules/pagekite/tests/test_functional.py +++ b/plinth/modules/pagekite/tests/test_functional.py @@ -14,56 +14,40 @@ pytestmark = [pytest.mark.system, pytest.mark.pagekite] # TODO Scenario: Delete custom service -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'pagekite') - yield - functional.app_disable(session_browser, 'pagekite') +class TestPagekiteApp(functional.BaseAppTests): + app_name = 'pagekite' + has_service = True + has_web = False + def test_configure(self, session_browser): + """Test pagekite configuration.""" + functional.app_enable(session_browser, 'pagekite') + _configure(session_browser, 'pagekite.example.com', 8080, + 'mykite.example.com', 'mysecret') + assert ('pagekite.example.com', 8080, 'mykite.example.com', + 'mysecret') == _get_configuration(session_browser) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'pagekite') + # Capitalized kite name should become lower case. + _configure(session_browser, 'pagekite.example.com', 8080, + 'Mykite.example.com', 'mysecret') + assert ('pagekite.example.com', 8080, 'mykite.example.com', + 'mysecret') == _get_configuration(session_browser) - functional.app_enable(session_browser, 'pagekite') - assert functional.service_is_running(session_browser, 'pagekite') + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of configuration.""" + functional.app_enable(session_browser, 'pagekite') + _configure(session_browser, 'beforebackup.example.com', 8081, + 'beforebackup.example.com', 'beforebackupsecret') + functional.backup_create(session_browser, 'pagekite', 'test_pagekite') - functional.app_disable(session_browser, 'pagekite') - assert functional.service_is_not_running(session_browser, 'pagekite') + _configure(session_browser, 'afterbackup.example.com', 8082, + 'afterbackup.example.com', 'afterbackupsecret') + functional.backup_restore(session_browser, 'pagekite', 'test_pagekite') - -def test_configure(session_browser): - """Test pagekite configuration.""" - functional.app_enable(session_browser, 'pagekite') - _configure(session_browser, 'pagekite.example.com', 8080, - 'mykite.example.com', 'mysecret') - assert ('pagekite.example.com', 8080, 'mykite.example.com', - 'mysecret') == _get_configuration(session_browser) - - # Capitalized kite name should become lower case. - _configure(session_browser, 'pagekite.example.com', 8080, - 'Mykite.example.com', 'mysecret') - assert ('pagekite.example.com', 8080, 'mykite.example.com', - 'mysecret') == _get_configuration(session_browser) - - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of configuration.""" - functional.app_enable(session_browser, 'pagekite') - _configure(session_browser, 'beforebackup.example.com', 8081, - 'beforebackup.example.com', 'beforebackupsecret') - functional.backup_create(session_browser, 'pagekite', 'test_pagekite') - - _configure(session_browser, 'afterbackup.example.com', 8082, - 'afterbackup.example.com', 'afterbackupsecret') - functional.backup_restore(session_browser, 'pagekite', 'test_pagekite') - - assert functional.service_is_running(session_browser, 'pagekite') - assert ('beforebackup.example.com', 8081, 'beforebackup.example.com', - 'beforebackupsecret') == _get_configuration(session_browser) + assert functional.service_is_running(session_browser, 'pagekite') + assert ('beforebackup.example.com', 8081, 'beforebackup.example.com', + 'beforebackupsecret') == _get_configuration(session_browser) def _configure(browser, host, port, kite_name, kite_secret): From 7e84eba6144627362279fcd201a67e3bc6801e1e Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 21:27:28 -0400 Subject: [PATCH 58/74] radicale: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/radicale/tests/test_functional.py | 89 +++++++++---------- 1 file changed, 41 insertions(+), 48 deletions(-) diff --git a/plinth/modules/radicale/tests/test_functional.py b/plinth/modules/radicale/tests/test_functional.py index ae9a46c68..e1db34592 100644 --- a/plinth/modules/radicale/tests/test_functional.py +++ b/plinth/modules/radicale/tests/test_functional.py @@ -15,63 +15,56 @@ logger = logging.getLogger(__name__) pytestmark = [pytest.mark.apps, pytest.mark.radicale] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'radicale') - yield - functional.app_disable(session_browser, 'radicale') +class TestRadicaleApp(functional.BaseAppTests): + app_name = 'radicale' + has_service = True + has_web = True + def assert_app_running(self, session_browser): + """Assert that the app is running.""" + assert functional.service_is_running(session_browser, self.app_name) + assert _calendar_is_available(session_browser) + assert _addressbook_is_available(session_browser) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'radicale') + def assert_app_not_running(self, session_browser): + """Assert that the app is not running.""" + assert functional.service_is_not_running(session_browser, + self.app_name) + assert not _calendar_is_available(session_browser) + assert not _addressbook_is_available(session_browser) - functional.app_enable(session_browser, 'radicale') - assert functional.service_is_running(session_browser, 'radicale') - assert _calendar_is_available(session_browser) - assert _addressbook_is_available(session_browser) + def test_access_rights(self, session_browser): + """Test setting the access rights.""" + functional.app_enable(session_browser, 'radicale') + _set_access_rights(session_browser, 'owner_only') - functional.app_disable(session_browser, 'radicale') - assert functional.service_is_not_running(session_browser, 'radicale') - assert not _calendar_is_available(session_browser) - assert not _addressbook_is_available(session_browser) + # Owner-write access rights + _set_access_rights(session_browser, 'owner_write') + assert functional.service_is_running(session_browser, 'radicale') + assert _get_access_rights(session_browser) == 'owner_write' + # Authenticated access rights + _set_access_rights(session_browser, 'authenticated') + assert functional.service_is_running(session_browser, 'radicale') + assert _get_access_rights(session_browser) == 'authenticated' -def test_access_rights(session_browser): - """Test setting the access rights.""" - functional.app_enable(session_browser, 'radicale') - _set_access_rights(session_browser, 'owner_only') + # Owner-only access rights + _set_access_rights(session_browser, 'owner_only') + assert functional.service_is_running(session_browser, 'radicale') + assert _get_access_rights(session_browser) == 'owner_only' - # Owner-write access rights - _set_access_rights(session_browser, 'owner_write') - assert functional.service_is_running(session_browser, 'radicale') - assert _get_access_rights(session_browser) == 'owner_write' + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of configuration.""" + functional.app_enable(session_browser, 'radicale') + _set_access_rights(session_browser, 'owner_only') + functional.backup_create(session_browser, 'radicale', 'test_radicale') - # Authenticated access rights - _set_access_rights(session_browser, 'authenticated') - assert functional.service_is_running(session_browser, 'radicale') - assert _get_access_rights(session_browser) == 'authenticated' + _set_access_rights(session_browser, 'owner_write') + functional.backup_restore(session_browser, 'radicale', 'test_radicale') - # Owner-only access rights - _set_access_rights(session_browser, 'owner_only') - assert functional.service_is_running(session_browser, 'radicale') - assert _get_access_rights(session_browser) == 'owner_only' - - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of configuration.""" - functional.app_enable(session_browser, 'radicale') - _set_access_rights(session_browser, 'owner_only') - functional.backup_create(session_browser, 'radicale', 'test_radicale') - - _set_access_rights(session_browser, 'owner_write') - functional.backup_restore(session_browser, 'radicale', 'test_radicale') - - assert functional.service_is_running(session_browser, 'radicale') - assert _get_access_rights(session_browser) == 'owner_only' + assert functional.service_is_running(session_browser, 'radicale') + assert _get_access_rights(session_browser) == 'owner_only' def _get_access_rights(browser): From a27333c0b305f34caf613340d1e1bc20dbd3f600 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 31 Oct 2021 21:39:22 -0400 Subject: [PATCH 59/74] samba: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/samba/tests/test_functional.py | 76 +++++++------------ 1 file changed, 28 insertions(+), 48 deletions(-) diff --git a/plinth/modules/samba/tests/test_functional.py b/plinth/modules/samba/tests/test_functional.py index a87c5a9d7..e80fb70eb 100644 --- a/plinth/modules/samba/tests/test_functional.py +++ b/plinth/modules/samba/tests/test_functional.py @@ -15,59 +15,39 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.samba] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'samba') - functional.app_enable(session_browser, 'samba') - functional.networks_set_firewall_zone(session_browser, 'internal') - yield - functional.login(session_browser) - functional.app_disable(session_browser, 'samba') +class TestSambaApp(functional.BaseAppTests): + app_name = 'samba' + has_service = True + has_web = False + @pytest.fixture(scope='class', autouse=True) + def fixture_setup(self, session_browser): + """Setup the app.""" + functional.networks_set_firewall_zone(session_browser, 'internal') -@pytest.fixture(autouse=True) -def fixture_login(session_browser): - """Login fixture.""" - functional.login(session_browser) - functional.app_enable(session_browser, 'samba') - yield + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backing up and restoring.""" + _set_share(session_browser, 'home', status='enabled') + functional.backup_create(session_browser, 'samba', 'test_samba') + _set_share(session_browser, 'home', status='disabled') + functional.backup_restore(session_browser, 'samba', 'test_samba') + assert functional.service_is_running(session_browser, 'samba') + _assert_share_is_writable('home') + @pytest.mark.parametrize('share_type', ['open', 'group', 'home']) + def test_enable_disable_samba_share(self, session_browser, share_type): + """Test enabling and disabling Samba share.""" + _set_share(session_browser, share_type, status='enabled') -@pytest.mark.backups -def test_backup(session_browser): - """Test backing up and restoring.""" - _set_share(session_browser, 'home', status='enabled') - functional.backup_create(session_browser, 'samba', 'test_samba') - _set_share(session_browser, 'home', status='disabled') - functional.backup_restore(session_browser, 'samba', 'test_samba') - assert functional.service_is_running(session_browser, 'samba') - _assert_share_is_writable('home') + _assert_share_is_writable(share_type) + if share_type == 'open': + _assert_share_is_writable(share_type, as_guest=True) + else: + _assert_share_is_not_accessible(share_type, as_guest=True) - -def test_enable_disable(session_browser): - """Test enabling and disabling the app.""" - functional.app_disable(session_browser, 'samba') - assert functional.service_is_not_running(session_browser, 'samba') - - functional.app_enable(session_browser, 'samba') - assert functional.service_is_running(session_browser, 'samba') - - -@pytest.mark.parametrize('share_type', ['open', 'group', 'home']) -def test_enable_disable_samba_share(session_browser, share_type): - """Test enabling and disabling Samba share.""" - _set_share(session_browser, share_type, status='enabled') - - _assert_share_is_writable(share_type) - if share_type == 'open': - _assert_share_is_writable(share_type, as_guest=True) - else: - _assert_share_is_not_accessible(share_type, as_guest=True) - - _set_share(session_browser, share_type, status='disabled') - _assert_share_is_not_available(share_type) + _set_share(session_browser, share_type, status='disabled') + _assert_share_is_not_available(share_type) def _set_share(browser, share_type, status='enabled'): From 452f8b825b28268fd6af6a3d7630918fcfcfe56c Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 1 Nov 2021 20:01:08 -0400 Subject: [PATCH 60/74] shadowsocks, syncthing: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../shadowsocks/tests/test_functional.py | 54 ++++----- .../syncthing/tests/test_functional.py | 110 ++++++++---------- 2 files changed, 69 insertions(+), 95 deletions(-) diff --git a/plinth/modules/shadowsocks/tests/test_functional.py b/plinth/modules/shadowsocks/tests/test_functional.py index 5f7e7bcfa..7bcdbb50b 100644 --- a/plinth/modules/shadowsocks/tests/test_functional.py +++ b/plinth/modules/shadowsocks/tests/test_functional.py @@ -10,42 +10,32 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.shadowsocks] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'shadowsocks') - _configure(session_browser, 'example.com', 'fakepassword') - yield - functional.app_disable(session_browser, 'shadowsocks') +class TestShadowsocksApp(functional.BaseAppTests): + app_name = 'shadowsocks' + has_service = True + has_web = False + @pytest.fixture(scope='class', autouse=True) + def fixture_setup(self, session_browser): + """Setup the app.""" + functional.login(session_browser) + functional.install(session_browser, 'shadowsocks') + _configure(session_browser, 'example.com', 'fakepassword') -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'shadowsocks') + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of configuration.""" + _configure(session_browser, 'example.com', 'beforebackup123') + functional.backup_create(session_browser, 'shadowsocks', + 'test_shadowsocks') - functional.app_enable(session_browser, 'shadowsocks') - assert functional.service_is_running(session_browser, 'shadowsocks') + _configure(session_browser, 'example.org', 'afterbackup123') + functional.backup_restore(session_browser, 'shadowsocks', + 'test_shadowsocks') - functional.app_disable(session_browser, 'shadowsocks') - assert functional.service_is_not_running(session_browser, 'shadowsocks') - - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of configuration.""" - functional.app_enable(session_browser, 'shadowsocks') - _configure(session_browser, 'example.com', 'beforebackup123') - functional.backup_create(session_browser, 'shadowsocks', - 'test_shadowsocks') - - _configure(session_browser, 'example.org', 'afterbackup123') - functional.backup_restore(session_browser, 'shadowsocks', - 'test_shadowsocks') - - assert functional.service_is_running(session_browser, 'shadowsocks') - assert _get_configuration(session_browser) == ('example.com', - 'beforebackup123') + assert functional.service_is_running(session_browser, 'shadowsocks') + assert _get_configuration(session_browser) == ('example.com', + 'beforebackup123') def _configure(browser, server, password): diff --git a/plinth/modules/syncthing/tests/test_functional.py b/plinth/modules/syncthing/tests/test_functional.py index e5ce13e00..e4aa90ef7 100644 --- a/plinth/modules/syncthing/tests/test_functional.py +++ b/plinth/modules/syncthing/tests/test_functional.py @@ -11,83 +11,67 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.syncthing, pytest.mark.sso] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'syncthing') - yield - functional.app_disable(session_browser, 'syncthing') +class TestSyncthingApp(functional.BaseAppTests): + app_name = 'syncthing' + has_service = True + has_web = True + def test_notifications(self, session_browser): + """Test that authentication and usage reporting notifications are not + shown.""" + functional.app_enable(session_browser, self.app_name) + functional.access_url(session_browser, self.app_name) + _assert_usage_report_notification_not_shown(session_browser) + _assert_authentication_notification_not_shown(session_browser) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'syncthing') + def test_add_remove_folder(self, session_browser): + """Test adding and removing a folder.""" + functional.app_enable(session_browser, self.app_name) + if _folder_is_present(session_browser, 'Test'): + _remove_folder(session_browser, 'Test') - functional.app_enable(session_browser, 'syncthing') - assert functional.service_is_running(session_browser, 'syncthing') + _add_folder(session_browser, 'Test', '/tmp') + assert _folder_is_present(session_browser, 'Test') - functional.app_disable(session_browser, 'syncthing') - assert functional.service_is_not_running(session_browser, 'syncthing') - - -def test_notifications(session_browser): - """Test that authentication and usage reporting notifications are not - shown.""" - functional.app_enable(session_browser, 'syncthing') - functional.access_url(session_browser, 'syncthing') - _assert_usage_report_notification_not_shown(session_browser) - _assert_authentication_notification_not_shown(session_browser) - - -def test_add_remove_folder(session_browser): - """Test adding and removing a folder.""" - functional.app_enable(session_browser, 'syncthing') - if _folder_is_present(session_browser, 'Test'): _remove_folder(session_browser, 'Test') + assert not _folder_is_present(session_browser, 'Test') - _add_folder(session_browser, 'Test', '/tmp') - assert _folder_is_present(session_browser, 'Test') + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of app data.""" + functional.app_enable(session_browser, self.app_name) + if _folder_is_present(session_browser, 'Test'): + _remove_folder(session_browser, 'Test') - _remove_folder(session_browser, 'Test') - assert not _folder_is_present(session_browser, 'Test') + _add_folder(session_browser, 'Test', '/tmp') + functional.backup_create(session_browser, self.app_name, + 'test_syncthing') - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of app data.""" - functional.app_enable(session_browser, 'syncthing') - if _folder_is_present(session_browser, 'Test'): _remove_folder(session_browser, 'Test') + functional.backup_restore(session_browser, self.app_name, + 'test_syncthing') - _add_folder(session_browser, 'Test', '/tmp') - functional.backup_create(session_browser, 'syncthing', 'test_syncthing') + assert _folder_is_present(session_browser, 'Test') - _remove_folder(session_browser, 'Test') - functional.backup_restore(session_browser, 'syncthing', 'test_syncthing') + def test_user_group_access(self, session_browser): + """Test that only users in syncthing-access group can access syncthing + site.""" + functional.app_enable(session_browser, self.app_name) + if not functional.user_exists(session_browser, 'syncthinguser'): + functional.create_user(session_browser, 'syncthinguser', + groups=['syncthing-access']) + if not functional.user_exists(session_browser, 'nogroupuser'): + functional.create_user(session_browser, 'nogroupuser') - assert _folder_is_present(session_browser, 'Test') + functional.login_with_account(session_browser, functional.base_url, + 'syncthinguser') + assert functional.is_available(session_browser, self.app_name) + functional.login_with_account(session_browser, functional.base_url, + 'nogroupuser') + assert not functional.is_available(session_browser, self.app_name) -def test_user_group_access(session_browser): - """Test that only users in syncthing-access group can access syncthing - site.""" - functional.app_enable(session_browser, 'syncthing') - if not functional.user_exists(session_browser, 'syncthinguser'): - functional.create_user(session_browser, 'syncthinguser', - groups=['syncthing-access']) - if not functional.user_exists(session_browser, 'nogroupuser'): - functional.create_user(session_browser, 'nogroupuser') - - functional.login_with_account(session_browser, functional.base_url, - 'syncthinguser') - assert functional.is_available(session_browser, 'syncthing') - - functional.login_with_account(session_browser, functional.base_url, - 'nogroupuser') - assert not functional.is_available(session_browser, 'syncthing') - - functional.login(session_browser) + functional.login(session_browser) def _assert_usage_report_notification_not_shown(session_browser): From b94833e44d84bfb6a7b94958927870e1c5654d7b Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 1 Nov 2021 21:37:40 -0400 Subject: [PATCH 61/74] transmission: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../transmission/tests/test_functional.py | 62 +++++++------------ 1 file changed, 23 insertions(+), 39 deletions(-) diff --git a/plinth/modules/transmission/tests/test_functional.py b/plinth/modules/transmission/tests/test_functional.py index 457e670e2..4cea09330 100644 --- a/plinth/modules/transmission/tests/test_functional.py +++ b/plinth/modules/transmission/tests/test_functional.py @@ -11,49 +11,33 @@ from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.transmission, pytest.mark.sso] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'transmission') - yield - functional.app_disable(session_browser, 'transmission') +class TestTransmissionApp(functional.BaseAppTests): + app_name = 'transmission' + has_service = False + has_web = True + def test_upload_torrent(self, session_browser): + """Test uploading a torrent to Transmission.""" + functional.app_enable(session_browser, 'transmission') + _remove_all_torrents(session_browser) + _upload_sample_torrent(session_browser) + _assert_number_of_torrents(session_browser, 1) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'transmission') + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of app data.""" + functional.app_enable(session_browser, 'transmission') + _remove_all_torrents(session_browser) + _upload_sample_torrent(session_browser) + functional.backup_create(session_browser, 'transmission', + 'test_transmission') - functional.app_enable(session_browser, 'transmission') - assert functional.is_available(session_browser, 'transmission') + _remove_all_torrents(session_browser) + functional.backup_restore(session_browser, 'transmission', + 'test_transmission') - functional.app_disable(session_browser, 'transmission') - assert not functional.is_available(session_browser, 'transmission') - - -def test_upload_torrent(session_browser): - """Test uploading a torrent to Transmission.""" - functional.app_enable(session_browser, 'transmission') - _remove_all_torrents(session_browser) - _upload_sample_torrent(session_browser) - _assert_number_of_torrents(session_browser, 1) - - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of app data.""" - functional.app_enable(session_browser, 'transmission') - _remove_all_torrents(session_browser) - _upload_sample_torrent(session_browser) - functional.backup_create(session_browser, 'transmission', - 'test_transmission') - - _remove_all_torrents(session_browser) - functional.backup_restore(session_browser, 'transmission', - 'test_transmission') - - assert functional.service_is_running(session_browser, 'transmission') - _assert_number_of_torrents(session_browser, 1) + assert functional.service_is_running(session_browser, 'transmission') + _assert_number_of_torrents(session_browser, 1) def _assert_number_of_torrents(session_browser, torrents_number): From 7b90787be3818a1725a1336b0c4cbe70c568de81 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 1 Nov 2021 20:26:29 -0400 Subject: [PATCH 62/74] tahoe: Use BaseAppTests for functional tests Not tested: App is not currently available. Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/tahoe/tests/test_functional.py | 96 ++++++++----------- 1 file changed, 42 insertions(+), 54 deletions(-) diff --git a/plinth/modules/tahoe/tests/test_functional.py b/plinth/modules/tahoe/tests/test_functional.py index cb13b6f25..3adf10e85 100644 --- a/plinth/modules/tahoe/tests/test_functional.py +++ b/plinth/modules/tahoe/tests/test_functional.py @@ -13,67 +13,55 @@ pytestmark = [pytest.mark.apps, pytest.mark.tahoe, pytest.mark.skip] # this is fixed. -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.set_advanced_mode(session_browser, True) - functional.set_domain_name(session_browser, 'mydomain.example') - functional.install(session_browser, 'tahoe') - functional.app_select_domain_name(session_browser, 'tahoe', - 'mydomain.example') - yield - functional.app_disable(session_browser, 'tahoe') +class TestTahoeApp(functional.BaseAppTests): + app_name = 'tahoe' + has_service = True + has_web = True + @pytest.fixture(scope='class', autouse=True) + def fixture_setup(self, session_browser): + """Setup the app.""" + functional.login(session_browser) + functional.set_advanced_mode(session_browser, True) + functional.set_domain_name(session_browser, 'mydomain.example') + functional.install(session_browser, self.app_name) + functional.app_select_domain_name(session_browser, self.app_name, + 'mydomain.example') -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'tahoe') - - functional.app_enable(session_browser, 'tahoe') - assert functional.service_is_running(session_browser, 'tahoe') - - functional.app_disable(session_browser, 'tahoe') - assert functional.service_is_not_running(session_browser, 'tahoe') - - -def test_default_introducers(session_browser): - """Test default introducers.""" - functional.app_enable(session_browser, 'tahoe') - assert _get_introducer(session_browser, 'mydomain.example', 'local') - assert _get_introducer(session_browser, 'mydomain.example', 'connected') - - -def test_add_remove_introducers(session_browser): - """Test add and remove introducers.""" - functional.app_enable(session_browser, 'tahoe') - if _get_introducer(session_browser, 'anotherdomain.example', 'connected'): - _remove_introducer(session_browser, 'anotherdomain.example') - - _add_introducer(session_browser, 'anotherdomain.example') - assert _get_introducer(session_browser, 'anotherdomain.example', - 'connected') - - _remove_introducer(session_browser, 'anotherdomain.example') - assert not _get_introducer(session_browser, 'anotherdomain.example', + def test_default_introducers(self, session_browser): + """Test default introducers.""" + assert _get_introducer(session_browser, 'mydomain.example', 'local') + assert _get_introducer(session_browser, 'mydomain.example', 'connected') - -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of app data.""" - functional.app_enable(session_browser, 'tahoe') - if not _get_introducer(session_browser, 'backupdomain.example', + def test_add_remove_introducers(self, session_browser): + """Test add and remove introducers.""" + if _get_introducer(session_browser, 'anotherdomain.example', 'connected'): - _add_introducer(session_browser, 'backupdomain.example') - functional.backup_create(session_browser, 'tahoe', 'test_tahoe') + _remove_introducer(session_browser, 'anotherdomain.example') - _remove_introducer(session_browser, 'backupdomain.example') - functional.backup_restore(session_browser, 'tahoe', 'test_tahoe') + _add_introducer(session_browser, 'anotherdomain.example') + assert _get_introducer(session_browser, 'anotherdomain.example', + 'connected') - assert functional.service_is_running(session_browser, 'tahoe') - assert _get_introducer(session_browser, 'backupdomain.example', - 'connected') + _remove_introducer(session_browser, 'anotherdomain.example') + assert not _get_introducer(session_browser, 'anotherdomain.example', + 'connected') + + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of app data.""" + if not _get_introducer(session_browser, 'backupdomain.example', + 'connected'): + _add_introducer(session_browser, 'backupdomain.example') + functional.backup_create(session_browser, self.app_name, 'test_tahoe') + + _remove_introducer(session_browser, 'backupdomain.example') + functional.backup_restore(session_browser, self.app_name, 'test_tahoe') + + assert functional.service_is_running(session_browser, self.app_name) + assert _get_introducer(session_browser, 'backupdomain.example', + 'connected') def _get_introducer(browser, domain, introducer_type): From 520feedaca03f92ff9492b169c8d894509d1ae12 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 1 Nov 2021 21:33:32 -0400 Subject: [PATCH 63/74] tor: Use BaseAppTests for functional tests Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/tor/tests/test_functional.py | 124 +++++++++----------- 1 file changed, 56 insertions(+), 68 deletions(-) diff --git a/plinth/modules/tor/tests/test_functional.py b/plinth/modules/tor/tests/test_functional.py index 3ccaa539e..0efca9a25 100644 --- a/plinth/modules/tor/tests/test_functional.py +++ b/plinth/modules/tor/tests/test_functional.py @@ -17,81 +17,69 @@ _TOR_FEATURE_TO_ELEMENT = { pytestmark = [pytest.mark.apps, pytest.mark.tor] -@pytest.fixture(scope='module', autouse=True) -def fixture_background(session_browser): - """Login and install the app.""" - functional.login(session_browser) - functional.install(session_browser, 'tor') - yield - functional.app_disable(session_browser, 'tor') +class TestTorApp(functional.BaseAppTests): + app_name = 'tor' + has_service = True + has_web = False + # TODO: Investigate why accessing IPv6 sites through Tor fails in + # container. + check_diagnostics = False + def test_set_tor_relay_configuration(self, session_browser): + """Test setting Tor relay configuration.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'relay', should_enable=False) + _feature_enable(session_browser, 'relay', should_enable=True) + _assert_feature_enabled(session_browser, 'relay', enabled=True) + assert 'orport' in _get_relay_ports(session_browser) -def test_enable_disable(session_browser): - """Test enabling the app.""" - functional.app_disable(session_browser, 'tor') + def test_set_tor_bridge_relay_configuration(self, session_browser): + """Test setting Tor bridge relay configuration.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'bridge-relay', should_enable=False) + _feature_enable(session_browser, 'bridge-relay', should_enable=True) + _assert_feature_enabled(session_browser, 'bridge-relay', enabled=True) + assert 'obfs3' in _get_relay_ports(session_browser) + assert 'obfs4' in _get_relay_ports(session_browser) - functional.app_enable(session_browser, 'tor') - assert functional.service_is_running(session_browser, 'tor') + def test_set_tor_hidden_services_configuration(self, session_browser): + """Test setting Tor hidden services configuration.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'hidden-services', + should_enable=False) + _feature_enable(session_browser, 'hidden-services', should_enable=True) + _assert_feature_enabled(session_browser, 'hidden-services', + enabled=True) + _assert_hidden_services(session_browser) - functional.app_disable(session_browser, 'tor') - assert functional.service_is_not_running(session_browser, 'tor') + def test_set_download_software_packages_over_tor(self, session_browser): + """Test setting download software packages over Tor.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'software', should_enable=True) + _feature_enable(session_browser, 'software', should_enable=False) + _assert_feature_enabled(session_browser, 'software', enabled=False) + # TODO: Test more thoroughly by checking same hidden service is restored + # and by actually connecting using Tor. + @pytest.mark.backups + def test_backup_restore(self, session_browser): + """Test backup and restore of configuration.""" + functional.app_enable(session_browser, 'tor') + _feature_enable(session_browser, 'relay', should_enable=True) + _feature_enable(session_browser, 'bridge-relay', should_enable=True) + _feature_enable(session_browser, 'hidden-services', should_enable=True) + functional.backup_create(session_browser, 'tor', 'test_tor') -def test_set_tor_relay_configuration(session_browser): - """Test setting Tor relay configuration.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'relay', should_enable=False) - _feature_enable(session_browser, 'relay', should_enable=True) - _assert_feature_enabled(session_browser, 'relay', enabled=True) - assert 'orport' in _get_relay_ports(session_browser) + _feature_enable(session_browser, 'relay', should_enable=False) + _feature_enable(session_browser, 'hidden-services', + should_enable=False) + functional.backup_restore(session_browser, 'tor', 'test_tor') - -def test_set_tor_bridge_relay_configuration(session_browser): - """Test setting Tor bridge relay configuration.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'bridge-relay', should_enable=False) - _feature_enable(session_browser, 'bridge-relay', should_enable=True) - _assert_feature_enabled(session_browser, 'bridge-relay', enabled=True) - assert 'obfs3' in _get_relay_ports(session_browser) - assert 'obfs4' in _get_relay_ports(session_browser) - - -def test_set_tor_hidden_services_configuration(session_browser): - """Test setting Tor hidden services configuration.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'hidden-services', should_enable=False) - _feature_enable(session_browser, 'hidden-services', should_enable=True) - _assert_feature_enabled(session_browser, 'hidden-services', enabled=True) - _assert_hidden_services(session_browser) - - -def test_set_download_software_packages_over_tor(session_browser): - """Test setting download software packages over Tor.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'software', should_enable=True) - _feature_enable(session_browser, 'software', should_enable=False) - _assert_feature_enabled(session_browser, 'software', enabled=False) - - -# TODO: Test more thoroughly by checking same hidden service is restored and by -# actually connecting using Tor. -@pytest.mark.backups -def test_backup_restore(session_browser): - """Test backup and restore of configuration.""" - functional.app_enable(session_browser, 'tor') - _feature_enable(session_browser, 'relay', should_enable=True) - _feature_enable(session_browser, 'bridge-relay', should_enable=True) - _feature_enable(session_browser, 'hidden-services', should_enable=True) - functional.backup_create(session_browser, 'tor', 'test_tor') - - _feature_enable(session_browser, 'relay', should_enable=False) - _feature_enable(session_browser, 'hidden-services', should_enable=False) - functional.backup_restore(session_browser, 'tor', 'test_tor') - - assert functional.service_is_running(session_browser, 'tor') - _assert_feature_enabled(session_browser, 'relay', enabled=True) - _assert_feature_enabled(session_browser, 'bridge-relay', enabled=True) - _assert_feature_enabled(session_browser, 'hidden-services', enabled=True) + assert functional.service_is_running(session_browser, 'tor') + _assert_feature_enabled(session_browser, 'relay', enabled=True) + _assert_feature_enabled(session_browser, 'bridge-relay', enabled=True) + _assert_feature_enabled(session_browser, 'hidden-services', + enabled=True) def _feature_enable(browser, feature, should_enable): From 10ece80a56ce6dc3124ac9997164edd08f869679 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Wed, 3 Nov 2021 14:58:04 -0400 Subject: [PATCH 64/74] tests: functional: Add diagnostics delay parameter Time to delay after app is enabled, before checking diagnosics. Default value is 0 (no delay). Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/i2p/tests/test_functional.py | 1 + plinth/modules/matrixsynapse/tests/test_functional.py | 7 +------ plinth/tests/functional/__init__.py | 2 ++ 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/plinth/modules/i2p/tests/test_functional.py b/plinth/modules/i2p/tests/test_functional.py index c3e2c0a11..d71a5f7ef 100644 --- a/plinth/modules/i2p/tests/test_functional.py +++ b/plinth/modules/i2p/tests/test_functional.py @@ -14,3 +14,4 @@ class TestI2pApp(BaseAppTests): app_name = 'i2p' has_service = True has_web = True + diagnostics_delay = 1 diff --git a/plinth/modules/matrixsynapse/tests/test_functional.py b/plinth/modules/matrixsynapse/tests/test_functional.py index 893593ea9..4d844fefd 100644 --- a/plinth/modules/matrixsynapse/tests/test_functional.py +++ b/plinth/modules/matrixsynapse/tests/test_functional.py @@ -4,7 +4,6 @@ Functional, browser based tests for matrixsynapse app. """ import pytest -import time from plinth.tests import functional @@ -15,6 +14,7 @@ class TestMatrixSynapseApp(functional.BaseAppTests): app_name = 'matrixsynapse' has_service = True has_web = False + diagnostics_delay = 1 @pytest.fixture(scope='class', autouse=True) def fixture_setup(self, session_browser): @@ -24,8 +24,3 @@ class TestMatrixSynapseApp(functional.BaseAppTests): functional.install(session_browser, self.app_name) functional.app_select_domain_name(session_browser, self.app_name, 'mydomain.example') - - def test_run_diagnostics(self, session_browser): - """Add a short delay before checking diagnostics.""" - time.sleep(1) - super().test_run_diagnostics(session_browser) diff --git a/plinth/tests/functional/__init__.py b/plinth/tests/functional/__init__.py index 7d4f8e2a0..acee59ca7 100644 --- a/plinth/tests/functional/__init__.py +++ b/plinth/tests/functional/__init__.py @@ -599,6 +599,7 @@ class BaseAppTests: has_service = False has_web = True check_diagnostics = True + diagnostics_delay = 0 def assert_app_running(self, session_browser): """Assert that the app is running.""" @@ -639,6 +640,7 @@ class BaseAppTests: if not self.check_diagnostics: pytest.skip(f'Skipping diagnostics check for ${self.app_name}.') + time.sleep(self.diagnostics_delay) session_browser.find_by_id('id_extra_actions_button').click() submit(session_browser, form_class='form-diagnostics-button') From 4bb0f81643486b185e708ed498c851e4cce1c051 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Fri, 5 Nov 2021 15:41:31 -0400 Subject: [PATCH 65/74] avahi: Use systemd sandboxing Sandbox coverage is 35%. Tests: - Functional tests passed. - Diagnostics passed. - FreedomBox services are visible in Avahi Zeroconf Browser. Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../system/avahi-daemon.service.d/freedombox.conf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 plinth/modules/avahi/data/usr/lib/systemd/system/avahi-daemon.service.d/freedombox.conf diff --git a/plinth/modules/avahi/data/usr/lib/systemd/system/avahi-daemon.service.d/freedombox.conf b/plinth/modules/avahi/data/usr/lib/systemd/system/avahi-daemon.service.d/freedombox.conf new file mode 100644 index 000000000..09e2117cd --- /dev/null +++ b/plinth/modules/avahi/data/usr/lib/systemd/system/avahi-daemon.service.d/freedombox.conf @@ -0,0 +1,15 @@ +[Service] +LockPersonality=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateMounts=yes +PrivateTmp=yes +ProtectControlGroups=yes +ProtectHome=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=full +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK +RestrictRealtime=yes +SystemCallArchitectures=native From ff0dc01023166b3c755b4051e6b458da9dbace26 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 4 Nov 2021 15:48:05 -0400 Subject: [PATCH 66/74] samba: Use systemd sandboxing for smbd/nmbd Test: Samba functional tests passed. Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../system/nmbd.service.d/freedombox.conf | 16 ++++++++++++++++ .../system/smbd.service.d/freedombox.conf | 15 +++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 plinth/modules/samba/data/usr/lib/systemd/system/nmbd.service.d/freedombox.conf create mode 100644 plinth/modules/samba/data/usr/lib/systemd/system/smbd.service.d/freedombox.conf diff --git a/plinth/modules/samba/data/usr/lib/systemd/system/nmbd.service.d/freedombox.conf b/plinth/modules/samba/data/usr/lib/systemd/system/nmbd.service.d/freedombox.conf new file mode 100644 index 000000000..c178ad6a1 --- /dev/null +++ b/plinth/modules/samba/data/usr/lib/systemd/system/nmbd.service.d/freedombox.conf @@ -0,0 +1,16 @@ +[Service] +LockPersonality=yes +MemoryDenyWriteExecute=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateMounts=yes +PrivateTmp=yes +ProtectControlGroups=yes +ProtectHome=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=full +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK +RestrictRealtime=yes +SystemCallArchitectures=native diff --git a/plinth/modules/samba/data/usr/lib/systemd/system/smbd.service.d/freedombox.conf b/plinth/modules/samba/data/usr/lib/systemd/system/smbd.service.d/freedombox.conf new file mode 100644 index 000000000..6fc272456 --- /dev/null +++ b/plinth/modules/samba/data/usr/lib/systemd/system/smbd.service.d/freedombox.conf @@ -0,0 +1,15 @@ +[Service] +LockPersonality=yes +MemoryDenyWriteExecute=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateMounts=yes +PrivateTmp=yes +ProtectControlGroups=yes +ProtectKernelLogs=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=full +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK +RestrictRealtime=yes +SystemCallArchitectures=native From cd4bd17173a7fc28679214f8802d5b8a8e1b3ca8 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 29 Oct 2021 10:36:05 +0530 Subject: [PATCH 67/74] components: Introduce new component - Packages Signed-off-by: Joseph Nuthalapati [sunil: isort all files] [sunil: Remove component in datetime component as managed_packages is empty] [sunil: Minor refactor in minidlna for consistency] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/apache/__init__.py | 4 ++++ plinth/modules/avahi/__init__.py | 4 ++++ plinth/modules/backups/__init__.py | 5 +++++ plinth/modules/bepasty/__init__.py | 4 ++++ plinth/modules/bind/__init__.py | 5 +++++ plinth/modules/calibre/__init__.py | 4 ++++ plinth/modules/cockpit/__init__.py | 5 +++++ plinth/modules/coturn/__init__.py | 4 ++++ plinth/modules/datetime/__init__.py | 3 +-- plinth/modules/deluge/__init__.py | 4 ++++ plinth/modules/diaspora/__init__.py | 5 +++++ plinth/modules/dynamicdns/__init__.py | 5 +++++ plinth/modules/ejabberd/__init__.py | 5 +++++ plinth/modules/firewall/__init__.py | 9 ++++++-- plinth/modules/gitweb/__init__.py | 4 ++++ plinth/modules/i2p/__init__.py | 4 ++++ plinth/modules/ikiwiki/__init__.py | 4 ++++ plinth/modules/infinoted/__init__.py | 5 +++++ plinth/modules/jsxc/__init__.py | 5 +++++ plinth/modules/letsencrypt/__init__.py | 5 +++++ plinth/modules/matrixsynapse/__init__.py | 5 +++++ plinth/modules/mediawiki/__init__.py | 4 ++++ plinth/modules/minetest/__init__.py | 5 +++++ plinth/modules/minidlna/__init__.py | 27 +++++++++++++++--------- plinth/modules/mldonkey/__init__.py | 4 ++++ plinth/modules/monkeysphere/__init__.py | 5 +++++ plinth/modules/mumble/__init__.py | 5 +++++ plinth/modules/networks/__init__.py | 5 +++++ plinth/modules/openvpn/__init__.py | 4 ++++ plinth/modules/pagekite/__init__.py | 5 +++++ plinth/modules/performance/__init__.py | 5 +++++ plinth/modules/privoxy/__init__.py | 5 +++++ plinth/modules/quassel/__init__.py | 5 +++++ plinth/modules/radicale/__init__.py | 5 +++++ plinth/modules/roundcube/__init__.py | 5 +++++ plinth/modules/samba/__init__.py | 4 ++++ plinth/modules/searx/__init__.py | 4 ++++ plinth/modules/security/__init__.py | 5 +++++ plinth/modules/shaarli/__init__.py | 5 +++++ plinth/modules/shadowsocks/__init__.py | 5 +++++ plinth/modules/snapshot/__init__.py | 5 +++++ plinth/modules/ssh/__init__.py | 5 +++++ plinth/modules/sso/__init__.py | 5 +++++ plinth/modules/storage/__init__.py | 5 +++++ plinth/modules/syncthing/__init__.py | 4 ++++ plinth/modules/tahoe/__init__.py | 5 +++++ plinth/modules/tor/__init__.py | 5 +++++ plinth/modules/transmission/__init__.py | 5 +++++ plinth/modules/ttrss/__init__.py | 4 ++++ plinth/modules/upgrades/__init__.py | 5 +++++ plinth/modules/users/__init__.py | 5 +++++ plinth/modules/wireguard/__init__.py | 5 +++++ plinth/modules/wordpress/__init__.py | 4 ++++ plinth/modules/zoph/__init__.py | 5 +++++ plinth/package.py | 10 ++++++++- 55 files changed, 272 insertions(+), 15 deletions(-) diff --git a/plinth/modules/apache/__init__.py b/plinth/modules/apache/__init__.py index 08fdac67c..3ec814c5f 100644 --- a/plinth/modules/apache/__init__.py +++ b/plinth/modules/apache/__init__.py @@ -12,6 +12,7 @@ from plinth import cfg from plinth.daemon import Daemon from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt +from plinth.package import Packages from plinth.utils import format_lazy, is_valid_user_name version = 9 @@ -41,6 +42,9 @@ class ApacheApp(app_module.App): name=_('Apache HTTP Server')) self.add(info) + packages = Packages('packages-apache', managed_packages) + self.add(packages) + web_server_ports = Firewall('firewall-web', _('Web Server'), ports=['http', 'https'], is_external=True) self.add(web_server_ports) diff --git a/plinth/modules/avahi/__init__.py b/plinth/modules/avahi/__init__.py index a7480cf5f..ae7ca6c09 100644 --- a/plinth/modules/avahi/__init__.py +++ b/plinth/modules/avahi/__init__.py @@ -13,6 +13,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.config import get_hostname from plinth.modules.firewall.components import Firewall from plinth.modules.names.components import DomainType +from plinth.package import Packages from plinth.signals import domain_added, domain_removed, post_hostname_change from plinth.utils import format_lazy @@ -65,6 +66,9 @@ class AvahiApp(app_module.App): 'avahi:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-avahi', managed_packages) + self.add(packages) + domain_type = DomainType('domain-type-local', _('Local Network Domain'), 'config:index', can_have_certificate=False) diff --git a/plinth/modules/backups/__init__.py b/plinth/modules/backups/__init__.py index f083d02ce..9fdf8fb22 100644 --- a/plinth/modules/backups/__init__.py +++ b/plinth/modules/backups/__init__.py @@ -17,6 +17,7 @@ from django.utils.translation import gettext_noop from plinth import actions from plinth import app as app_module from plinth import cfg, glib, menu +from plinth.package import Packages from . import api @@ -49,6 +50,7 @@ class BackupsApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info( app_id=self.app_id, version=version, depends=depends, name=_('Backups'), icon='fa-files-o', description=_description, @@ -60,6 +62,9 @@ class BackupsApp(app_module.App): 'backups:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-backups', managed_packages) + self.add(packages) + # Check every hour (every 3 minutes in debug mode) to perform scheduled # backups. interval = 180 if cfg.develop else 3600 diff --git a/plinth/modules/bepasty/__init__.py b/plinth/modules/bepasty/__init__.py index 7dff5f5bf..0170f6780 100644 --- a/plinth/modules/bepasty/__init__.py +++ b/plinth/modules/bepasty/__init__.py @@ -13,6 +13,7 @@ from plinth import frontpage, menu from plinth.modules.apache.components import Uwsgi, Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from . import manifest @@ -79,6 +80,9 @@ class BepastyApp(app_module.App): clients=manifest.clients) self.add(shortcut) + packages = Packages('packages-bepasty', managed_packages) + self.add(packages) + firewall = Firewall('firewall-bepasty', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/bind/__init__.py b/plinth/modules/bind/__init__.py index a2d32b2bb..0423f2a4e 100644 --- a/plinth/modules/bind/__init__.py +++ b/plinth/modules/bind/__init__.py @@ -16,6 +16,7 @@ from plinth import cfg, menu from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -74,6 +75,7 @@ class BindApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('BIND'), icon='fa-globe-w', short_description=_('Domain Name Server'), @@ -85,6 +87,9 @@ class BindApp(app_module.App): parent_url_name='system') self.add(menu_item) + packages = Packages('packages-bind', managed_packages) + self.add(packages) + firewall = Firewall('firewall-bind', info.name, ports=['dns'], is_external=False) self.add(firewall) diff --git a/plinth/modules/calibre/__init__.py b/plinth/modules/calibre/__init__.py index 16bcab5a3..9bbd7f290 100644 --- a/plinth/modules/calibre/__init__.py +++ b/plinth/modules/calibre/__init__.py @@ -16,6 +16,7 @@ from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -78,6 +79,9 @@ class CalibreApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) + packages = Packages('packages-calibre', managed_packages) + self.add(packages) + firewall = Firewall('firewall-calibre', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/cockpit/__init__.py b/plinth/modules/cockpit/__init__.py index 70d2ccd53..4efd156e8 100644 --- a/plinth/modules/cockpit/__init__.py +++ b/plinth/modules/cockpit/__init__.py @@ -14,6 +14,7 @@ from plinth.modules import names from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.signals import domain_added, domain_removed from plinth.utils import format_lazy @@ -60,6 +61,7 @@ class CockpitApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Cockpit'), icon='fa-wrench', icon_filename='cockpit', @@ -81,6 +83,9 @@ class CockpitApp(app_module.App): allowed_groups=['admin']) self.add(shortcut) + packages = Packages('packages-cockpit', managed_packages) + self.add(packages) + firewall = Firewall('firewall-cockpit', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/coturn/__init__.py b/plinth/modules/coturn/__init__.py index bf06d7129..1deb2f2be 100644 --- a/plinth/modules/coturn/__init__.py +++ b/plinth/modules/coturn/__init__.py @@ -20,6 +20,7 @@ from plinth.modules.coturn.components import TurnConfiguration, TurnConsumer from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -69,6 +70,9 @@ class CoturnApp(app_module.App): parent_url_name='apps') self.add(menu_item) + packages = Packages('packages-coturn', managed_packages) + self.add(packages) + firewall = Firewall('firewall-coturn', info.name, ports=['coturn-freedombox'], is_external=True) self.add(firewall) diff --git a/plinth/modules/datetime/__init__.py b/plinth/modules/datetime/__init__.py index 7a555c733..486d2ad9a 100644 --- a/plinth/modules/datetime/__init__.py +++ b/plinth/modules/datetime/__init__.py @@ -20,8 +20,6 @@ is_essential = True managed_services = ['systemd-timesyncd'] -managed_packages = [] - _description = [ _('Network time server is a program that maintains the system time ' 'in synchronization with servers on the Internet.') @@ -65,6 +63,7 @@ class DateTimeApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Date & Time'), icon='fa-clock-o', diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index d57a72bdf..36cfcba62 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -14,6 +14,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users import add_user_to_share_group from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from . import manifest @@ -69,6 +70,9 @@ class DelugeApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) + packages = Packages('packages-deluge', managed_packages) + self.add(packages) + firewall = Firewall('firewall-deluge', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/diaspora/__init__.py b/plinth/modules/diaspora/__init__.py index 78e1a0c4a..8261b8e51 100644 --- a/plinth/modules/diaspora/__init__.py +++ b/plinth/modules/diaspora/__init__.py @@ -12,6 +12,7 @@ from plinth.daemon import Daemon from plinth.errors import DomainNotRegisteredError from plinth.modules.apache.components import Webserver, diagnose_url from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import format_lazy domain_name_file = "/etc/diaspora/domain_name" @@ -64,6 +65,7 @@ class DiasporaApp(app_module.App): """Create components for the app.""" super().__init__() from . import manifest + info = app_module.Info(app_id=self.app_id, version=version, name=_('diaspora*'), icon_filename='diaspora', short_description=_('Federated Social Network'), @@ -82,6 +84,9 @@ class DiasporaApp(app_module.App): clients=info.clients, login_required=True) self.add(shortcut) + packages = Packages('packages-diaspora', managed_packages) + self.add(packages) + firewall = Firewall('firewall-diaspora', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/dynamicdns/__init__.py b/plinth/modules/dynamicdns/__init__.py index 536351557..6e0435d64 100644 --- a/plinth/modules/dynamicdns/__init__.py +++ b/plinth/modules/dynamicdns/__init__.py @@ -11,6 +11,7 @@ from plinth import cfg, menu from plinth.modules.backups.components import BackupRestore from plinth.modules.names.components import DomainType from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.signals import domain_added from plinth.utils import format_lazy @@ -51,6 +52,7 @@ class DynamicDNSApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, depends=depends, name=_('Dynamic DNS Client'), icon='fa-refresh', @@ -62,6 +64,9 @@ class DynamicDNSApp(app_module.App): 'dynamicdns:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-dynamicdns', managed_packages) + self.add(packages) + domain_type = DomainType('domain-type-dynamic', _('Dynamic Domain Name'), 'dynamicdns:index', can_have_certificate=True) diff --git a/plinth/modules/ejabberd/__init__.py b/plinth/modules/ejabberd/__init__.py index e73847b73..41a5418e7 100644 --- a/plinth/modules/ejabberd/__init__.py +++ b/plinth/modules/ejabberd/__init__.py @@ -21,6 +21,7 @@ from plinth.modules.coturn.components import TurnConfiguration, TurnConsumer from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.signals import (domain_added, post_hostname_change, pre_hostname_change) from plinth.utils import format_lazy @@ -67,6 +68,7 @@ class EjabberdApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('ejabberd'), icon_filename='ejabberd', short_description=_('Chat Server'), @@ -88,6 +90,9 @@ class EjabberdApp(app_module.App): login_required=True) self.add(shortcut) + packages = Packages('packages-ejabberd', managed_packages) + self.add(packages) + firewall = Firewall('firewall-ejabberd', info.name, ports=['xmpp-client', 'xmpp-server', 'xmpp-bosh'], is_external=True) diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py index a2aefc6c7..6bc78f56f 100644 --- a/plinth/modules/firewall/__init__.py +++ b/plinth/modules/firewall/__init__.py @@ -13,6 +13,7 @@ from plinth import app as app_module from plinth import cfg, menu from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore +from plinth.package import Packages from plinth.utils import Version, format_lazy, import_from_gi from . import manifest @@ -62,6 +63,7 @@ class FirewallApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Firewall'), icon='fa-shield', description=_description, @@ -72,6 +74,9 @@ class FirewallApp(app_module.App): 'firewall:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-firewall', managed_packages) + self.add(packages) + daemon = Daemon('daemon-firewall', managed_services[0]) self.add(daemon) @@ -129,8 +134,8 @@ def ignore_dbus_error(dbus_error=None, service_error=None): if parts[0] != 'GDBus.Error': raise - if (dbus_error and parts[1].strip() == 'org.freedesktop.DBus.Error.' + - dbus_error): + if (dbus_error and parts[1].strip() + == 'org.freedesktop.DBus.Error.' + dbus_error): logger.error('Firewalld is not running.') pass elif (service_error and parts[2].strip() == service_error): diff --git a/plinth/modules/gitweb/__init__.py b/plinth/modules/gitweb/__init__.py index 41252e616..5a7c44481 100644 --- a/plinth/modules/gitweb/__init__.py +++ b/plinth/modules/gitweb/__init__.py @@ -16,6 +16,7 @@ from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from . import manifest from .forms import is_repo_url @@ -73,6 +74,9 @@ class GitwebApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) + packages = Packages('packages-gitweb', managed_packages) + self.add(packages) + firewall = Firewall('firewall-gitweb', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/i2p/__init__.py b/plinth/modules/i2p/__init__.py index b7bf6bcac..c5e190f20 100644 --- a/plinth/modules/i2p/__init__.py +++ b/plinth/modules/i2p/__init__.py @@ -14,6 +14,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.i2p.resources import FAVORITES from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from . import manifest @@ -77,6 +78,9 @@ class I2PApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) + packages = Packages('packages-i2p', managed_packages) + self.add(packages) + firewall = Firewall('firewall-i2p-web', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 6ccbd1269..6948b660d 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -13,6 +13,7 @@ from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -64,6 +65,9 @@ class IkiwikiApp(app_module.App): self.refresh_sites() + packages = Packages('packages-ikiwiki', managed_packages) + self.add(packages) + firewall = Firewall('firewall-ikiwiki', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index a8f04118d..be3ef58e8 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -12,6 +12,7 @@ from plinth import cfg, frontpage, menu from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -42,6 +43,7 @@ class InfinotedApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('infinoted'), icon_filename='infinoted', short_description=_('Gobby Server'), @@ -63,6 +65,9 @@ class InfinotedApp(app_module.App): clients=info.clients, login_required=False) self.add(shortcut) + packages = Packages('packages-infinoted', managed_packages) + self.add(packages) + firewall = Firewall('firewall-infinoted', info.name, ports=['infinoted-plinth'], is_external=True) self.add(firewall) diff --git a/plinth/modules/jsxc/__init__.py b/plinth/modules/jsxc/__init__.py index e12d0a3bf..25200be7d 100644 --- a/plinth/modules/jsxc/__init__.py +++ b/plinth/modules/jsxc/__init__.py @@ -12,6 +12,7 @@ from plinth import app as app_module from plinth import frontpage, menu from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.web_server import StaticFiles from . import manifest @@ -40,6 +41,7 @@ class JSXCApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('JSXC'), icon_filename='jsxc', short_description=_('Chat Client'), @@ -59,6 +61,9 @@ class JSXCApp(app_module.App): clients=info.clients) self.add(shortcut) + packages = Packages('packages-jsxc', managed_packages) + self.add(packages) + firewall = Firewall('firewall-jsxc', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/letsencrypt/__init__.py b/plinth/modules/letsencrypt/__init__.py index 57d397276..2b603c5a0 100644 --- a/plinth/modules/letsencrypt/__init__.py +++ b/plinth/modules/letsencrypt/__init__.py @@ -17,6 +17,7 @@ from plinth.modules import names from plinth.modules.apache.components import diagnose_url from plinth.modules.backups.components import BackupRestore from plinth.modules.names.components import DomainType +from plinth.package import Packages from plinth.signals import domain_added, domain_removed, post_module_loading from plinth.utils import format_lazy @@ -60,6 +61,7 @@ class LetsEncryptApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, depends=depends, name=_('Let\'s Encrypt'), icon='fa-lock', @@ -74,6 +76,9 @@ class LetsEncryptApp(app_module.App): 'letsencrypt:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-letsencrypt', managed_packages) + self.add(packages) + backup_restore = BackupRestore('backup-restore-letsencrypt', **manifest.backup) self.add(backup_restore) diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index 5d7cf3de6..83a7aa952 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -21,6 +21,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.coturn.components import TurnConfiguration, TurnConsumer from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt +from plinth.package import Packages from plinth.utils import format_lazy, is_non_empty_file from . import manifest @@ -72,6 +73,7 @@ class MatrixSynapseApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info( app_id=self.app_id, version=version, name=_('Matrix Synapse'), icon_filename='matrixsynapse', short_description=_('Chat Server'), @@ -92,6 +94,9 @@ class MatrixSynapseApp(app_module.App): clients=info.clients, login_required=True) self.add(shortcut) + packages = Packages('packages-matrixsynapse', managed_packages) + self.add(packages) + firewall = Firewall('firewall-matrixsynapse', info.name, ports=['matrix-synapse-plinth'], is_external=True) self.add(firewall) diff --git a/plinth/modules/mediawiki/__init__.py b/plinth/modules/mediawiki/__init__.py index b1d157c47..23f1d073a 100644 --- a/plinth/modules/mediawiki/__init__.py +++ b/plinth/modules/mediawiki/__init__.py @@ -15,6 +15,7 @@ from plinth.daemon import Daemon from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from . import manifest @@ -74,6 +75,9 @@ class MediaWikiApp(app_module.App): clients=info.clients, login_required=True) self.add(shortcut) + packages = Packages('packages-mediawiki', managed_packages) + self.add(packages) + firewall = Firewall('firewall-mediawiki', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index 4e3b70f45..3ecfc4e9a 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -13,6 +13,7 @@ from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -57,6 +58,7 @@ class MinetestApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info( app_id=self.app_id, version=version, name=_('Minetest'), icon_filename='minetest', short_description=_('Block Sandbox'), @@ -78,6 +80,9 @@ class MinetestApp(app_module.App): login_required=False) self.add(shortcut) + packages = Packages('packages-minetest', managed_packages) + self.add(packages) + firewall = Firewall('firewall-minetest', info.name, ports=['minetest-plinth'], is_external=True) self.add(firewall) diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py index e4de44d37..2bd9a518b 100644 --- a/plinth/modules/minidlna/__init__.py +++ b/plinth/modules/minidlna/__init__.py @@ -11,6 +11,7 @@ from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import Version from . import manifest @@ -61,28 +62,34 @@ class MiniDLNAApp(app_module.App): parent_url_name='apps', icon=info.icon_filename, ) - firewall = Firewall('firewall-minidlna', info.name, ports=['minidlna'], - is_external=False) - webserver = Webserver('webserver-minidlna', 'minidlna-freedombox', - urls=['http://localhost:8200/']) + self.add(menu_item) + shortcut = frontpage.Shortcut('shortcut-minidlna', info.name, short_description=info.short_description, description=info.description, icon=info.icon_filename, url='/_minidlna/', login_required=True, allowed_groups=list(groups)) + self.add(shortcut) + + packages = Packages('packages-minidlna', managed_packages) + self.add(packages) + + firewall = Firewall('firewall-minidlna', info.name, ports=['minidlna'], + is_external=False) + self.add(firewall) + + webserver = Webserver('webserver-minidlna', 'minidlna-freedombox', + urls=['http://localhost:8200/']) + self.add(webserver) + daemon = Daemon('daemon-minidlna', managed_services[0]) + self.add(daemon) backup_restore = BackupRestore('backup-restore-minidlna', **manifest.backup) self.add(backup_restore) - self.add(menu_item) - self.add(webserver) - self.add(firewall) - self.add(shortcut) - self.add(daemon) - users_and_groups = UsersAndGroups('users-and-groups-minidlna', groups=groups) self.add(users_and_groups) diff --git a/plinth/modules/mldonkey/__init__.py b/plinth/modules/mldonkey/__init__.py index 3d44be83c..088132b63 100644 --- a/plinth/modules/mldonkey/__init__.py +++ b/plinth/modules/mldonkey/__init__.py @@ -14,6 +14,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users import add_user_to_share_group from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -73,6 +74,9 @@ class MLDonkeyApp(app_module.App): allowed_groups=list(groups)) self.add(shortcuts) + packages = Packages('packages-mldonkey', managed_packages) + self.add(packages) + firewall = Firewall('firewall-mldonkey', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/monkeysphere/__init__.py b/plinth/modules/monkeysphere/__init__.py index ab612d917..1e10ddb45 100644 --- a/plinth/modules/monkeysphere/__init__.py +++ b/plinth/modules/monkeysphere/__init__.py @@ -9,6 +9,7 @@ from plinth import app as app_module from plinth import menu from plinth.modules.backups.components import BackupRestore from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from . import manifest @@ -46,6 +47,7 @@ class MonkeysphereApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Monkeysphere'), icon='fa-certificate', description=_description, @@ -57,6 +59,9 @@ class MonkeysphereApp(app_module.App): advanced=True) self.add(menu_item) + packages = Packages('packages-monkeysphere', managed_packages) + self.add(packages) + users_and_groups = UsersAndGroups('users-and-groups-monkeysphere', reserved_usernames=['monkeysphere']) self.add(users_and_groups) diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 57f56b272..c33912af6 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -17,6 +17,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import Version from . import manifest @@ -48,6 +49,7 @@ class MumbleApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info( app_id=self.app_id, version=version, name=_('Mumble'), icon_filename='mumble', short_description=_('Voice Chat'), @@ -67,6 +69,9 @@ class MumbleApp(app_module.App): configure_url=reverse_lazy('mumble:index'), clients=info.clients) self.add(shortcut) + packages = Packages('packages-mumble', managed_packages) + self.add(packages) + firewall = Firewall('firewall-mumble', info.name, ports=['mumble-plinth'], is_external=True) self.add(firewall) diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index 1d56c5cd8..32d90097f 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -12,6 +12,7 @@ from django.utils.translation import gettext_lazy as _ from plinth import actions from plinth import app as app_module from plinth import daemon, kvstore, menu, network +from plinth.package import Packages version = 1 @@ -57,6 +58,7 @@ class NetworksApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Networks'), icon='fa-signal', description=_description, @@ -67,6 +69,9 @@ class NetworksApp(app_module.App): 'networks:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-networks', managed_packages) + self.add(packages) + def diagnose(self): """Run diagnostics and return the results.""" results = super().diagnose() diff --git a/plinth/modules/openvpn/__init__.py b/plinth/modules/openvpn/__init__.py index be6a70247..06d9fd4cf 100644 --- a/plinth/modules/openvpn/__init__.py +++ b/plinth/modules/openvpn/__init__.py @@ -15,6 +15,7 @@ from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -81,6 +82,9 @@ class OpenVPNApp(app_module.App): allowed_groups=['vpn']) self.add(shortcut) + packages = Packages('packages-openvpn', managed_packages) + self.add(packages) + firewall = Firewall('firewall-openvpn', info.name, ports=['openvpn'], is_external=True) self.add(firewall) diff --git a/plinth/modules/pagekite/__init__.py b/plinth/modules/pagekite/__init__.py index dd39e076b..40f2c5913 100644 --- a/plinth/modules/pagekite/__init__.py +++ b/plinth/modules/pagekite/__init__.py @@ -11,6 +11,7 @@ from plinth import cfg, menu from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.names.components import DomainType +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest, utils @@ -60,6 +61,7 @@ class PagekiteApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info( app_id=self.app_id, version=version, depends=depends, name=_('PageKite'), icon='fa-flag', @@ -73,6 +75,9 @@ class PagekiteApp(app_module.App): 'pagekite:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-pagekite', managed_packages) + self.add(packages) + domain_type = DomainType('domain-type-pagekite', _('PageKite Domain'), 'pagekite:index', can_have_certificate=True) self.add(domain_type) diff --git a/plinth/modules/performance/__init__.py b/plinth/modules/performance/__init__.py index c1f7e3216..61f05da17 100644 --- a/plinth/modules/performance/__init__.py +++ b/plinth/modules/performance/__init__.py @@ -9,6 +9,7 @@ from plinth import app as app_module from plinth import menu from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore +from plinth.package import Packages from . import manifest @@ -42,6 +43,7 @@ class PerformanceApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Performance'), icon='fa-bar-chart', short_description=_('System Monitoring'), @@ -55,6 +57,9 @@ class PerformanceApp(app_module.App): 'performance:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-performance', managed_packages) + self.add(packages) + backup_restore = BackupRestore('backup-restore-performance', **manifest.backup) self.add(backup_restore) diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index 02bec9b21..76bea2307 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -14,6 +14,7 @@ from plinth.modules.apache.components import diagnose_url from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -52,6 +53,7 @@ class PrivoxyApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info( app_id=self.app_id, version=version, name=_('Privoxy'), icon_filename='privoxy', short_description=_('Web Proxy'), @@ -71,6 +73,9 @@ class PrivoxyApp(app_module.App): configure_url=reverse_lazy('privoxy:index'), login_required=True) self.add(shortcut) + packages = Packages('packages-privoxy', managed_packages) + self.add(packages) + firewall = Firewall('firewall-privoxy', info.name, ports=['privoxy'], is_external=False) self.add(firewall) diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index bf17d805a..f9a0333f6 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -17,6 +17,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -56,6 +57,7 @@ class QuasselApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Quassel'), icon_filename='quassel', short_description=_('IRC Client'), @@ -76,6 +78,9 @@ class QuasselApp(app_module.App): login_required=True) self.add(shortcut) + packages = Packages('packages-quassel', managed_packages) + self.add(packages) + firewall = Firewall('firewall-quassel', info.name, ports=['quassel-plinth'], is_external=True) self.add(firewall) diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index 97112e41b..dc93e4174 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -15,6 +15,7 @@ from plinth.modules.apache.components import Uwsgi, Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import Version, format_lazy from . import manifest @@ -51,6 +52,7 @@ class RadicaleApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Radicale'), icon_filename='radicale', short_description=_('Calendar and Addressbook'), @@ -71,6 +73,9 @@ class RadicaleApp(app_module.App): login_required=True) self.add(shortcut) + packages = Packages('packages-radicale', managed_packages) + self.add(packages) + firewall = Firewall('firewall-radicale', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index 7455928b4..1a897d082 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -11,6 +11,7 @@ from plinth import frontpage, menu from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import Version from . import manifest @@ -51,6 +52,7 @@ class RoundcubeApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Roundcube'), icon_filename='roundcube', short_description=_('Email Client'), @@ -71,6 +73,9 @@ class RoundcubeApp(app_module.App): login_required=True) self.add(shortcut) + packages = Packages('packages-roundcube', managed_packages) + self.add(packages) + firewall = Firewall('firewall-roundcube', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index f00e332a3..c9d1584e7 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -18,6 +18,7 @@ from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -79,6 +80,9 @@ class SambaApp(app_module.App): login_required=True, allowed_groups=list(groups)) self.add(shortcut) + packages = Packages('packages-samba', managed_packages) + self.add(packages) + firewall = Firewall('firewall-samba', info.name, ports=['samba']) self.add(firewall) diff --git a/plinth/modules/searx/__init__.py b/plinth/modules/searx/__init__.py index 1246d760c..5a68055c1 100644 --- a/plinth/modules/searx/__init__.py +++ b/plinth/modules/searx/__init__.py @@ -14,6 +14,7 @@ from plinth.modules.apache.components import Uwsgi, Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from . import manifest @@ -65,6 +66,9 @@ class SearxApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) + packages = Packages('packages-searx', managed_packages) + self.add(packages) + firewall = Firewall('firewall-searx', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/security/__init__.py b/plinth/modules/security/__init__.py index 4ccc42b6e..43325562f 100644 --- a/plinth/modules/security/__init__.py +++ b/plinth/modules/security/__init__.py @@ -13,6 +13,7 @@ from plinth import actions from plinth import app as app_module from plinth import menu, module_loader from plinth.modules.backups.components import BackupRestore +from plinth.package import Packages from . import manifest @@ -41,6 +42,7 @@ class SecurityApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Security'), icon='fa-lock', manual_page='Security') @@ -50,6 +52,9 @@ class SecurityApp(app_module.App): 'security:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-security', managed_packages) + self.add(packages) + backup_restore = BackupRestore('backup-restore-security', **manifest.backup) self.add(backup_restore) diff --git a/plinth/modules/shaarli/__init__.py b/plinth/modules/shaarli/__init__.py index b14a82125..2239d2082 100644 --- a/plinth/modules/shaarli/__init__.py +++ b/plinth/modules/shaarli/__init__.py @@ -9,6 +9,7 @@ from plinth import app as app_module from plinth import frontpage, menu from plinth.modules.apache.components import Webserver from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from . import manifest @@ -33,6 +34,7 @@ class ShaarliApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Shaarli'), icon_filename='shaarli', short_description=_('Bookmarks'), @@ -52,6 +54,9 @@ class ShaarliApp(app_module.App): login_required=True) self.add(shortcut) + packages = Packages('packages-shaarli', managed_packages) + self.add(packages) + firewall = Firewall('firewall-shaarli', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/shadowsocks/__init__.py b/plinth/modules/shadowsocks/__init__.py index 5a30e9bd3..f37f754c8 100644 --- a/plinth/modules/shadowsocks/__init__.py +++ b/plinth/modules/shadowsocks/__init__.py @@ -12,6 +12,7 @@ from plinth import cfg, frontpage, menu from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -47,6 +48,7 @@ class ShadowsocksApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Shadowsocks'), icon_filename='shadowsocks', @@ -68,6 +70,9 @@ class ShadowsocksApp(app_module.App): login_required=True) self.add(shortcut) + packages = Packages('packages-shadowsocks', managed_packages) + self.add(packages) + firewall = Firewall('firewall-shadowsocks', info.name, ports=['shadowsocks-local-plinth'], is_external=False) diff --git a/plinth/modules/snapshot/__init__.py b/plinth/modules/snapshot/__init__.py index df3797811..d92a01897 100644 --- a/plinth/modules/snapshot/__init__.py +++ b/plinth/modules/snapshot/__init__.py @@ -14,6 +14,7 @@ from plinth import app as app_module from plinth import menu from plinth.modules import storage from plinth.modules.backups.components import BackupRestore +from plinth.package import Packages from . import manifest @@ -52,6 +53,7 @@ class SnapshotApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Storage Snapshots'), icon='fa-film', description=_description, @@ -62,6 +64,9 @@ class SnapshotApp(app_module.App): 'snapshot:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-snapshot', managed_packages) + self.add(packages) + backup_restore = SnapshotBackupRestore('backup-restore-snapshot', **manifest.backup) self.add(backup_restore) diff --git a/plinth/modules/ssh/__init__.py b/plinth/modules/ssh/__init__.py index 0e3d94b20..efc3addac 100644 --- a/plinth/modules/ssh/__init__.py +++ b/plinth/modules/ssh/__init__.py @@ -15,6 +15,7 @@ from plinth import menu from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from . import manifest @@ -44,6 +45,7 @@ class SSHApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Secure Shell (SSH) Server'), @@ -54,6 +56,9 @@ class SSHApp(app_module.App): 'ssh:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-ssh', managed_packages) + self.add(packages) + firewall = Firewall('firewall-ssh', info.name, ports=['ssh'], is_external=True) self.add(firewall) diff --git a/plinth/modules/sso/__init__.py b/plinth/modules/sso/__init__.py index a131d69de..a6c2019fb 100644 --- a/plinth/modules/sso/__init__.py +++ b/plinth/modules/sso/__init__.py @@ -7,6 +7,7 @@ from django.utils.translation import gettext_lazy as _ from plinth import actions from plinth import app as app_module +from plinth.package import Packages version = 1 @@ -29,11 +30,15 @@ class SSOApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, depends=depends, name=_('Single Sign On')) self.add(info) + packages = Packages('packages-sso', managed_packages) + self.add(packages) + def setup(helper, old_version=None): """Install the required packages""" diff --git a/plinth/modules/storage/__init__.py b/plinth/modules/storage/__init__.py index 472943a93..1c40575b0 100644 --- a/plinth/modules/storage/__init__.py +++ b/plinth/modules/storage/__init__.py @@ -16,6 +16,7 @@ from plinth import app as app_module from plinth import cfg, glib, menu from plinth.errors import ActionError, PlinthError from plinth.modules.backups.components import BackupRestore +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest, udisks2 @@ -49,6 +50,7 @@ class StorageApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Storage'), icon='fa-hdd-o', description=_description, @@ -59,6 +61,9 @@ class StorageApp(app_module.App): 'storage:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-storage', managed_packages) + self.add(packages) + backup_restore = BackupRestore('backup-restore-storage', **manifest.backup) self.add(backup_restore) diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index e99ac42a1..776ff9d44 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -14,6 +14,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users import add_user_to_share_group from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -80,6 +81,9 @@ class SyncthingApp(app_module.App): allowed_groups=list(self.groups)) self.add(shortcut) + packages = Packages('packages-syncthing', managed_packages) + self.add(packages) + firewall = Firewall('firewall-syncthing-web', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/tahoe/__init__.py b/plinth/modules/tahoe/__init__.py index 946634468..e9630593c 100644 --- a/plinth/modules/tahoe/__init__.py +++ b/plinth/modules/tahoe/__init__.py @@ -16,6 +16,7 @@ from plinth.daemon import Daemon from plinth.modules.apache.components import Webserver, diagnose_url from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -58,6 +59,7 @@ class TahoeApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Tahoe-LAFS'), icon_filename='tahoe-lafs', @@ -78,6 +80,9 @@ class TahoeApp(app_module.App): configure_url=reverse_lazy('tahoe:index'), login_required=True) self.add(shortcut) + packages = Packages('packages-tahoe', managed_packages) + self.add(packages) + firewall = Firewall('firewall-tahoe', info.name, ports=['tahoe-plinth'], is_external=True) self.add(firewall) diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index 8af5c2d21..22d5d4e23 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -17,6 +17,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.names.components import DomainType from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.signals import domain_added, domain_removed from . import manifest, utils @@ -51,6 +52,7 @@ class TorApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Tor'), icon_filename='tor', short_description=_('Anonymity Network'), @@ -64,6 +66,9 @@ class TorApp(app_module.App): parent_url_name='apps') self.add(menu_item) + packages = Packages('packages-tor', managed_packages) + self.add(packages) + domain_type = DomainType('domain-type-tor', _('Tor Onion Service'), 'tor:index', can_have_certificate=False) self.add(domain_type) diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index a37003436..e28ccc2e6 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -16,6 +16,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users import add_user_to_share_group from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from . import manifest @@ -49,6 +50,7 @@ class TransmissionApp(app_module.App): groups = { 'bit-torrent': _('Download files using BitTorrent applications') } + info = app_module.Info( app_id=self.app_id, version=version, name=_('Transmission'), icon_filename='transmission', @@ -70,6 +72,9 @@ class TransmissionApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) + packages = Packages('packages-transmission', managed_packages) + self.add(packages) + firewall = Firewall('firewall-transmission', info.name, ports=['http', 'https', 'transmission-client'], is_external=True) diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index 06e450f5e..40d7ea7cb 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -14,6 +14,7 @@ from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups +from plinth.package import Packages from plinth.utils import Version, format_lazy from . import manifest @@ -74,6 +75,9 @@ class TTRSSApp(app_module.App): allowed_groups=list(groups)) self.add(shortcut) + packages = Packages('packages-ttrss', managed_packages) + self.add(packages) + firewall = Firewall('firewall-ttrss', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index 3bdcad2d7..5704d75a4 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -17,6 +17,7 @@ from plinth import actions from plinth import app as app_module from plinth import cfg, glib, kvstore, menu from plinth.modules.backups.components import BackupRestore +from plinth.package import Packages from . import manifest @@ -73,6 +74,7 @@ class UpgradesApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Update'), icon='fa-refresh', description=_description, @@ -83,6 +85,9 @@ class UpgradesApp(app_module.App): 'upgrades:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-upgrades', managed_packages) + self.add(packages) + backup_restore = BackupRestore('backup-restore-upgrades', **manifest.backup) self.add(backup_restore) diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index 897fb96a3..af9d56363 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -13,6 +13,7 @@ from plinth import actions from plinth import app as app_module from plinth import cfg, menu from plinth.daemon import Daemon +from plinth.package import Packages from .components import UsersAndGroups @@ -60,6 +61,7 @@ class UsersApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, name=_('Users and Groups'), icon='fa-users', @@ -70,6 +72,9 @@ class UsersApp(app_module.App): 'users:index', parent_url_name='system') self.add(menu_item) + packages = Packages('packages-users', managed_packages) + self.add(packages) + daemon = Daemon('daemon-users', managed_services[0], listen_ports=[(389, 'tcp4'), (389, 'tcp6')]) self.add(daemon) diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index a55a589ce..0feae35d8 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -9,6 +9,7 @@ from django.utils.translation import gettext_lazy as _ from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import format_lazy, import_from_gi from . import manifest, utils @@ -45,6 +46,7 @@ class WireguardApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info( app_id=self.app_id, version=version, name=_('WireGuard'), icon_filename='wireguard', @@ -67,6 +69,9 @@ class WireguardApp(app_module.App): clients=info.clients) self.add(shortcut) + packages = Packages('packages-wireguard', managed_packages) + self.add(packages) + firewall = Firewall('firewall-wireguard', info.name, ports=['wireguard-freedombox'], is_external=True) self.add(firewall) diff --git a/plinth/modules/wordpress/__init__.py b/plinth/modules/wordpress/__init__.py index d918fd592..8c07b7c05 100644 --- a/plinth/modules/wordpress/__init__.py +++ b/plinth/modules/wordpress/__init__.py @@ -12,6 +12,7 @@ from plinth.daemon import Daemon from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -85,6 +86,9 @@ class WordPressApp(app_module.App): url='/wordpress/', clients=info.clients) self.add(shortcut) + packages = Packages('packages-wordpress', managed_packages) + self.add(packages) + firewall = Firewall('firewall-wordpress', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/modules/zoph/__init__.py b/plinth/modules/zoph/__init__.py index f65754e64..89525c227 100644 --- a/plinth/modules/zoph/__init__.py +++ b/plinth/modules/zoph/__init__.py @@ -14,6 +14,7 @@ from plinth import cfg, frontpage, menu from plinth.modules.apache.components import Webserver from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall +from plinth.package import Packages from plinth.utils import format_lazy from . import manifest @@ -58,6 +59,7 @@ class ZophApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() + info = app_module.Info(app_id=self.app_id, version=version, name=_('Zoph'), icon_filename='zoph', short_description=_('Photo Organizer'), @@ -77,6 +79,9 @@ class ZophApp(app_module.App): login_required=True) self.add(shortcut) + packages = Packages('packages-zoph', managed_packages) + self.add(packages) + firewall = Firewall('firewall-zoph', info.name, ports=['http', 'https'], is_external=True) self.add(firewall) diff --git a/plinth/package.py b/plinth/package.py index 617a4b3fd..496e52d2d 100644 --- a/plinth/package.py +++ b/plinth/package.py @@ -13,13 +13,21 @@ import apt.cache from django.utils.translation import gettext as _ from django.utils.translation import gettext_lazy -from plinth import actions +from plinth import actions, app from plinth.errors import ActionError from plinth.utils import format_lazy logger = logging.getLogger(__name__) +class Packages(app.FollowerComponent): + """Component to manage the packages of an app.""" + + def __init__(self, component_id, packages): + self.component_id = component_id + self.packages = packages + + class PackageException(Exception): """A package operation has failed.""" From 6e68614e213aa34f84ce7070925e54bc234b46c6 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 29 Oct 2021 16:12:50 +0530 Subject: [PATCH 68/74] setup: Use packages from Packages component Signed-off-by: Joseph Nuthalapati [sunil: Minor refactor in listing unavailable packages, add code comment] [sunil: Fix listing dependencies by initializing modules before call] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/__main__.py | 3 +++ plinth/package.py | 8 +++++++- plinth/setup.py | 30 +++++++++++++++++------------- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/plinth/__main__.py b/plinth/__main__.py index 171bcd36c..bdb7041bc 100644 --- a/plinth/__main__.py +++ b/plinth/__main__.py @@ -109,6 +109,9 @@ def main(): if arguments.list_dependencies is not False: log.default_level = 'ERROR' web_framework.init(read_only=True) + module_loader.include_urls() + menu.init() + module_loader.load_modules() list_dependencies(arguments.list_dependencies) log.init() diff --git a/plinth/package.py b/plinth/package.py index 496e52d2d..c24f2ac1a 100644 --- a/plinth/package.py +++ b/plinth/package.py @@ -24,8 +24,14 @@ class Packages(app.FollowerComponent): """Component to manage the packages of an app.""" def __init__(self, component_id, packages): + super(Packages, self).__init__(component_id) + self.component_id = component_id - self.packages = packages + self._packages = packages + + @property + def packages(self): + return self._packages class PackageException(Exception): diff --git a/plinth/setup.py b/plinth/setup.py index 8189f6199..9e3d23dd1 100644 --- a/plinth/setup.py +++ b/plinth/setup.py @@ -13,7 +13,7 @@ from collections import defaultdict import apt import plinth -from plinth.package import packages_installed +from plinth.package import Packages, packages_installed from plinth.signals import post_setup from . import package @@ -161,6 +161,7 @@ class Helper(object): def has_unavailable_packages(self): """Find if any of the packages managed by the module are not available. + Returns True if one or more of the packages is not available in the user's Debian distribution or False otherwise. Returns None if it cannot be reliably determined whether the @@ -173,8 +174,15 @@ class Helper(object): ]) if num_files < 2: # not counting the lock file return None + + pkg_components = list(self.module.app.get_components_of_type(Packages)) + if not pkg_components: # This app has no packages to install + return False + + # List of all packages from all Package components + managed_pkgs = (package for component in pkg_components + for package in component.packages) cache = apt.Cache() - managed_pkgs = _get_module_managed_packages(self.module) unavailable_pkgs = (pkg_name for pkg_name in managed_pkgs if pkg_name not in cache) return any(unavailable_pkgs) @@ -231,8 +239,9 @@ def list_dependencies(module_list=None, essential=False): '*' not in module_list: continue - for package_name in _get_module_managed_packages(module): - print(package_name) + for component in module.app.get_components_of_type(Packages): + for package_name in component.packages: + print(package_name) def run_setup_in_background(): @@ -314,11 +323,6 @@ def _get_module_package_conflicts(module): None), getattr(module, 'package_conflicts_action', None)) -def _get_module_managed_packages(module): - """Return list of packages managed by a module.""" - return getattr(module, 'managed_packages', []) - - def _module_state_matches(module, state): """Return if the current setup state of a module matches given state.""" return module.setup_helper.get_state() == state @@ -582,11 +586,11 @@ class ForceUpgrader(): # Or needs an update, let it update first. continue - managed_packages = _get_module_managed_packages(module) - upgradable_packages.update(managed_packages) + for component in module.app.get_components_of_type(Packages): + upgradable_packages.update(component.packages) - for managed_package in managed_packages: - package_apps_map[managed_package].add(module) + for managed_package in component.packages: + package_apps_map[managed_package].add(module) return upgradable_packages.intersection( set(packages)), package_apps_map From 53fbaf27f22457aa5f4528350f849553a726814e Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 5 Nov 2021 16:05:11 +0530 Subject: [PATCH 69/74] components: Add docstrings & tutorial for Packages Signed-off-by: Joseph Nuthalapati [sunil: Include the new component reference in the components index] [sunil: Minor changes to component doc string] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- doc/dev/reference/components/index.rst | 1 + doc/dev/reference/components/packages.rst | 7 ++++++ doc/dev/tutorial/components.rst | 30 +++++++++++++++++++++++ plinth/package.py | 20 ++++++++++++--- 4 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 doc/dev/reference/components/packages.rst diff --git a/doc/dev/reference/components/index.rst b/doc/dev/reference/components/index.rst index ec91f206c..7273e82ca 100644 --- a/doc/dev/reference/components/index.rst +++ b/doc/dev/reference/components/index.rst @@ -8,6 +8,7 @@ Components info menu + packages daemon firewall webserver diff --git a/doc/dev/reference/components/packages.rst b/doc/dev/reference/components/packages.rst new file mode 100644 index 000000000..6ae4f77fb --- /dev/null +++ b/doc/dev/reference/components/packages.rst @@ -0,0 +1,7 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Packages +^^^^^^^^ + +.. autoclass:: plinth.package.Packages + :members: diff --git a/doc/dev/tutorial/components.rst b/doc/dev/tutorial/components.rst index fde22cf41..9b2d801a1 100644 --- a/doc/dev/tutorial/components.rst +++ b/doc/dev/tutorial/components.rst @@ -112,6 +112,36 @@ the daemon. The final argument is the list of ports that this daemon listens on. This information is used to check if the daemon is listening on the expected ports when the user requests diagnostic tests on the app. +Package management +^^^^^^^^^^^^^^^^^^ + +Transmission server is installed through a set of packages fetched from Debian +package repositories. The packages required for this are passed on to a +:class:`~plinth.package.Packages` component which takes care of installing, +upgrading and uninstalling the Debian packages. An app might require one or more +Debian packages to be installed. + +.. code-block:: python3 + :caption: ``__init__.py`` + + from plinth.package import Packages + + managed_packages = ['transmission-daemon'] + + class TransmissionApp(app_module.App): + ... + + def __init__(self): + ... + + packages = Packages('packages-transmission', managed_packages) + self.add(packages) + +The first argument uniquely identifies this instance of the `Packages` +component. Choose an appropriate unique identifier if your app has multiple +`Packages` components. The second argument is a list of Debian packages that +this component is responsible for. + Managing web server configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/plinth/package.py b/plinth/package.py index c24f2ac1a..f2e1a1946 100644 --- a/plinth/package.py +++ b/plinth/package.py @@ -21,16 +21,28 @@ logger = logging.getLogger(__name__) class Packages(app.FollowerComponent): - """Component to manage the packages of an app.""" + """Component to manage the packages of an app. - def __init__(self, component_id, packages): - super(Packages, self).__init__(component_id) + This component is responsible for installation, upgrades and uninstallation + of packages required by an app. + """ + + def __init__(self, component_id: str, packages: list[str]): + """Initialize a new packages component. + + 'component_id' should be a unique ID across all components of an app + and across all components. + + 'packages' is the list of Debian packages managed by this component. + """ + super().__init__(component_id) self.component_id = component_id self._packages = packages @property - def packages(self): + def packages(self) -> list[str]: + """Return the list of packages managed by this component.""" return self._packages From 903bf6f29bb2f8826eed259d360b245ba99e938a Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 8 Nov 2021 20:27:59 -0500 Subject: [PATCH 70/74] debian: Add python3-openssl to autopkgtest depends Signed-off-by: James Valleroy --- debian/tests/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/tests/control b/debian/tests/control index 810fa0c93..0b696e5b1 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -14,4 +14,4 @@ Restrictions: needs-root # Run unit and integration tests on installed files. # Test-Command: PYTHONPATH='/usr/lib/python3/dist-packages/plinth/' py.test-3 -p no:cacheprovider --cov=plinth --cov-report=html:debci/htmlcov --cov-report=term -Depends: git, python3-pytest, python3-pytest-cov, python3-pytest-django, @ +Depends: git, python3-openssl, python3-pytest, python3-pytest-cov, python3-pytest-django, @ From 7b9149d048aa62b09c52bd2f079cd8e88879e932 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Mon, 8 Nov 2021 16:54:33 -0800 Subject: [PATCH 71/74] security: Properly handle sandbox analysis of timer units - When a timer is provided to 'systemctl show' not all expected keys are provided in the result. This leads to a KeyError exception. - Also the security analysis for a timer unit is not useful. Instead perform the analysis on the corresponding .service unit. Closes: #2145 Tests: - Before the patch, Wordpress shows as not sandboxed. The security report page crashes on Debian testing setup. - After the patch, there is no crash. Wordpress shows as sandboxed with 86% coverage. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/security/__init__.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/plinth/modules/security/__init__.py b/plinth/modules/security/__init__.py index 43325562f..4fbad8597 100644 --- a/plinth/modules/security/__init__.py +++ b/plinth/modules/security/__init__.py @@ -155,6 +155,11 @@ def get_apps_report(): if services: apps[module_name]['sandboxed'] = False for service in services: + # If an app lists a timer, work on the associated service + # instead + if service.rpartition('.')[-1] == 'timer': + service = service.rpartition('.')[0] + if _get_service_is_sandboxed(service): apps[module_name]['sandboxed'] = True apps[module_name][ @@ -183,18 +188,18 @@ def _get_service_is_sandboxed(service): '--property=PrivateMounts', ]).decode().strip().split('\n') pairs = [line.partition('=')[::2] for line in lines] - properties = {name: value for name, value in pairs} - if properties['ProtectSystem'] in ['yes', 'full', 'strict']: + properties = dict(pairs) + if properties.get('ProtectSystem') in ['yes', 'full', 'strict']: return True - if properties['ProtectHome'] in ['yes', 'read-only', 'tmpfs']: + if properties.get('ProtectHome') in ['yes', 'read-only', 'tmpfs']: return True for name in [ 'PrivateTmp', 'PrivateDevices', 'PrivateNetwork', 'PrivateUsers', 'PrivateMounts' ]: - if properties[name] == 'yes': + if properties.get(name) == 'yes': return True return False From e3f7511ff2eff37bf20f0c88141200f44cddc33c Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 8 Nov 2021 21:02:10 -0500 Subject: [PATCH 72/74] locale: Update translation strings Signed-off-by: James Valleroy --- plinth/locale/ar_SA/LC_MESSAGES/django.po | 851 ++++++++--------- plinth/locale/bg/LC_MESSAGES/django.po | 851 ++++++++--------- plinth/locale/bn/LC_MESSAGES/django.po | 882 +++++++++--------- plinth/locale/cs/LC_MESSAGES/django.po | 946 ++++++++++--------- plinth/locale/da/LC_MESSAGES/django.po | 939 ++++++++++--------- plinth/locale/de/LC_MESSAGES/django.po | 952 +++++++++---------- plinth/locale/django.pot | 851 ++++++++--------- plinth/locale/el/LC_MESSAGES/django.po | 939 ++++++++++--------- plinth/locale/es/LC_MESSAGES/django.po | 953 ++++++++++--------- plinth/locale/fa/LC_MESSAGES/django.po | 932 +++++++++---------- plinth/locale/fake/LC_MESSAGES/django.po | 955 ++++++++++---------- plinth/locale/fr/LC_MESSAGES/django.po | 948 +++++++++---------- plinth/locale/gl/LC_MESSAGES/django.po | 839 ++++++++--------- plinth/locale/gu/LC_MESSAGES/django.po | 905 +++++++++---------- plinth/locale/hi/LC_MESSAGES/django.po | 946 ++++++++++--------- plinth/locale/hu/LC_MESSAGES/django.po | 953 ++++++++++--------- plinth/locale/id/LC_MESSAGES/django.po | 939 ++++++++++--------- plinth/locale/it/LC_MESSAGES/django.po | 909 +++++++++---------- plinth/locale/ja/LC_MESSAGES/django.po | 851 ++++++++--------- plinth/locale/kn/LC_MESSAGES/django.po | 851 ++++++++--------- plinth/locale/lt/LC_MESSAGES/django.po | 851 ++++++++--------- plinth/locale/nb/LC_MESSAGES/django.po | 953 ++++++++++--------- plinth/locale/nl/LC_MESSAGES/django.po | 948 +++++++++---------- plinth/locale/pl/LC_MESSAGES/django.po | 926 +++++++++---------- plinth/locale/pt/LC_MESSAGES/django.po | 922 +++++++++---------- plinth/locale/ru/LC_MESSAGES/django.po | 953 ++++++++++--------- plinth/locale/si/LC_MESSAGES/django.po | 851 ++++++++--------- plinth/locale/sl/LC_MESSAGES/django.po | 872 +++++++++--------- plinth/locale/sq/LC_MESSAGES/django.po | 939 ++++++++++--------- plinth/locale/sr/LC_MESSAGES/django.po | 855 ++++++++---------- plinth/locale/sv/LC_MESSAGES/django.po | 954 +++++++++---------- plinth/locale/ta/LC_MESSAGES/django.po | 851 ++++++++--------- plinth/locale/te/LC_MESSAGES/django.po | 951 ++++++++++--------- plinth/locale/tr/LC_MESSAGES/django.po | 951 +++++++++---------- plinth/locale/uk/LC_MESSAGES/django.po | 948 +++++++++---------- plinth/locale/vi/LC_MESSAGES/django.po | 883 +++++++++--------- plinth/locale/zh_Hans/LC_MESSAGES/django.po | 939 ++++++++++--------- plinth/locale/zh_Hant/LC_MESSAGES/django.po | 869 ++++++++---------- 38 files changed, 16533 insertions(+), 18075 deletions(-) diff --git a/plinth/locale/ar_SA/LC_MESSAGES/django.po b/plinth/locale/ar_SA/LC_MESSAGES/django.po index 096e057cb..c81c09993 100644 --- a/plinth/locale/ar_SA/LC_MESSAGES/django.po +++ b/plinth/locale/ar_SA/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: aiman an \n" "Language-Team: Arabic (Saudi Arabia) calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1035,7 +1036,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1044,7 +1045,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1052,25 +1053,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by
    any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1215,7 +1216,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1223,7 +1224,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1869,48 +1870,18 @@ msgstr "خادم ويب" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1935,16 +1906,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1961,159 +1971,69 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2121,7 +2041,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2153,19 +2073,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2241,7 +2148,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2252,21 +2159,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2627,7 +2534,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2635,31 +2542,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2696,14 +2603,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2712,15 +2619,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2797,11 +2704,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2809,11 +2716,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2832,17 +2739,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2851,7 +2758,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2861,7 +2768,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2869,15 +2776,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2978,7 +2885,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2988,14 +2895,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3066,7 +2973,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3074,7 +2981,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3083,18 +2990,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3178,7 +3085,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3187,11 +3094,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3257,7 +3164,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3268,15 +3175,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3316,36 +3223,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3357,7 +3264,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3369,7 +3276,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3380,7 +3287,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3502,24 +3409,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3570,23 +3477,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4066,6 +3973,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4503,7 +4415,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4592,7 +4504,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4603,20 +4515,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4680,7 +4592,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4689,33 +4601,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4724,15 +4636,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4866,25 +4778,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4945,14 +4857,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4962,20 +4874,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4986,7 +4898,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5006,7 +4918,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5016,19 +4928,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5095,7 +5007,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5103,7 +5015,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5112,7 +5024,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5122,17 +5034,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5141,31 +5053,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5273,27 +5185,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5448,32 +5360,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5482,17 +5394,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5621,14 +5533,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5636,14 +5548,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5833,7 +5745,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5841,7 +5753,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5882,7 +5794,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5890,7 +5802,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5898,104 +5810,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6109,7 +6021,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6117,7 +6029,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6129,20 +6041,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6150,7 +6062,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6158,11 +6070,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6197,7 +6109,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6206,40 +6118,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6365,58 +6277,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6424,12 +6332,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6437,30 +6345,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6626,14 +6541,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6641,15 +6556,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6875,18 +6790,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7180,7 +7095,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7189,7 +7104,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7198,26 +7113,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7231,7 +7146,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7244,7 +7159,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7252,11 +7167,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7290,23 +7205,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7367,6 +7282,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index da3301941..f0f540ba6 100644 --- a/plinth/locale/bg/LC_MESSAGES/django.po +++ b/plinth/locale/bg/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-10-19 15:13+0000\n" "Last-Translator: 109247019824 \n" "Language-Team: Bulgarian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1069,7 +1070,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1078,7 +1079,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1086,25 +1087,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1249,7 +1250,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1257,7 +1258,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1901,48 +1902,18 @@ msgstr "Пощенски сървър" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1967,16 +1938,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1993,159 +2003,69 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Сигурност" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2153,7 +2073,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2185,19 +2105,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2273,7 +2180,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2284,21 +2191,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2661,7 +2568,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2669,31 +2576,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2730,14 +2637,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2746,15 +2653,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2831,11 +2738,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2843,11 +2750,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2866,17 +2773,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2885,7 +2792,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2895,7 +2802,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2903,15 +2810,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3012,7 +2919,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3022,14 +2929,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3100,7 +3007,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3108,7 +3015,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3117,18 +3024,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3210,7 +3117,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3219,11 +3126,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3289,7 +3196,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3300,15 +3207,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3348,36 +3255,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3389,7 +3296,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3401,7 +3308,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3412,7 +3319,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3534,24 +3441,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3602,23 +3509,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4098,6 +4005,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Сигурност" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4535,7 +4447,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4624,7 +4536,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4635,20 +4547,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4712,7 +4624,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4721,33 +4633,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4756,15 +4668,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4898,25 +4810,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4977,14 +4889,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4994,20 +4906,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5018,7 +4930,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5038,7 +4950,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5048,19 +4960,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5127,7 +5039,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5135,7 +5047,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5144,7 +5056,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5154,17 +5066,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5173,31 +5085,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5305,27 +5217,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "Грешка при забраняване на споделянето: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5480,32 +5392,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5514,17 +5426,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5653,14 +5565,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5668,14 +5580,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5865,7 +5777,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5873,7 +5785,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5914,7 +5826,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5922,7 +5834,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5930,104 +5842,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6141,7 +6053,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6149,7 +6061,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6161,20 +6073,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6182,7 +6094,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6190,11 +6102,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6229,7 +6141,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6238,40 +6150,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6397,58 +6309,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Четец на абонаменти за новини" @@ -6456,14 +6364,14 @@ msgstr "Четец на абонаменти за новини" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Проверява и прилага последните издания на софтуера и обновявания на " "сигурността." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6471,30 +6379,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Обновяване" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "Обновяване на FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6660,14 +6575,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6675,15 +6590,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6909,18 +6824,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7214,7 +7129,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7223,7 +7138,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7232,26 +7147,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7265,7 +7180,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7278,7 +7193,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7286,11 +7201,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7324,23 +7239,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7401,6 +7316,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index c03a672ad..f7614279a 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-06-16 07:33+0000\n" "Last-Translator: Oymate \n" "Language-Team: Bengali calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1034,7 +1035,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1043,7 +1044,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1051,25 +1052,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1214,7 +1215,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1222,7 +1223,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ইজ্যাবার্ড" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1867,48 +1868,18 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1935,18 +1906,59 @@ msgstr "" msgid "Has a TLS certificate" msgstr "অনুমতিপত্র" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "ডোমেন" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Enabled" +msgid "Aliases" +msgstr "সক্রিয়" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "সক্রিয়" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "নিষ্ক্রিয়" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1963,173 +1975,79 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Enabled" msgid "Manage Aliases" msgstr "সক্রিয়" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "নিষ্ক্রিয়" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy #| msgid "Enabled" -msgid "Enable selected" +msgid "Enable" msgstr "সক্রিয়" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "ডোমেন" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Enabled" +msgid "Manage Spam" +msgstr "সক্রিয়" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service/Port" msgid "Service Alert" msgstr "সেবা/পোর্ট" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificates" -msgid "Certificate path" -msgstr "অনুমতিপত্র" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "ডোমেন" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -#, fuzzy -#| msgid "Enabled" -msgid "Enabled aliases" -msgstr "সক্রিয়" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" +msgstr "" -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "নিষ্ক্রিয়" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2137,7 +2055,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "ফায়ারওয়্যাল" @@ -2169,19 +2087,6 @@ msgstr "" msgid "Service/Port" msgstr "সেবা/পোর্ট" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "সক্রিয়" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "নিষ্ক্রিয়" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "অনুমোদিত" @@ -2257,7 +2162,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2268,21 +2173,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2643,7 +2548,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2651,31 +2556,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2712,14 +2617,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2728,15 +2633,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ইকিউইকি" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2813,11 +2718,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2825,11 +2730,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "ইফিনোটেড" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2848,17 +2753,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2867,7 +2772,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2877,7 +2782,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2885,15 +2790,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "অনুমতিপত্র" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2994,7 +2899,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3004,14 +2909,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3082,7 +2987,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3090,7 +2995,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3099,18 +3004,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3192,7 +3097,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3201,11 +3106,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "মাইনটেস্ট" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3271,7 +3176,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3282,15 +3187,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3330,36 +3235,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3371,7 +3276,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3383,7 +3288,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3394,7 +3299,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "মাঙ্কিস্ফিয়ার" @@ -3516,24 +3421,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3584,23 +3489,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4080,6 +3985,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4517,7 +4427,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4606,7 +4516,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4617,20 +4527,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4694,7 +4604,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4703,33 +4613,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4738,15 +4648,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4880,25 +4790,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4959,14 +4869,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4976,20 +4886,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5000,7 +4910,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5020,7 +4930,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5030,19 +4940,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5109,7 +5019,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5117,7 +5027,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5126,7 +5036,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5136,17 +5046,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5155,31 +5065,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5289,27 +5199,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5464,32 +5374,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5498,17 +5408,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5637,14 +5547,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5652,14 +5562,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5849,7 +5759,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5857,7 +5767,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5898,7 +5808,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5906,7 +5816,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5914,104 +5824,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6125,7 +6035,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6133,7 +6043,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6145,20 +6055,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6166,7 +6076,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6174,11 +6084,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6213,7 +6123,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6222,40 +6132,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6381,58 +6291,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6440,12 +6346,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6453,30 +6359,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6642,14 +6555,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6657,15 +6570,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6891,18 +6804,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7196,7 +7109,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7205,7 +7118,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7214,26 +7127,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7247,7 +7160,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7260,7 +7173,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7268,11 +7181,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7306,23 +7219,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7383,6 +7296,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" @@ -7654,3 +7571,28 @@ msgstr "" #: plinth/web_framework.py:117 msgid "Gujarati" msgstr "" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "নিষ্ক্রিয়" + +#, fuzzy +#~| msgid "Enabled" +#~ msgid "Enable selected" +#~ msgstr "সক্রিয়" + +#, fuzzy +#~| msgid "Certificates" +#~ msgid "Certificate path" +#~ msgstr "অনুমতিপত্র" + +#, fuzzy +#~| msgid "Enabled" +#~ msgid "Enabled aliases" +#~ msgstr "সক্রিয়" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "নিষ্ক্রিয়" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 5c2f5b361..a9b8b650c 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-10-25 22:49+0000\n" "Last-Translator: trendspotter \n" "Language-Team: Czech calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1142,7 +1143,7 @@ msgstr "{name} smazáno." msgid "Could not delete {name}: {error}" msgstr "{name} se nepodařilo smazat: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1155,7 +1156,7 @@ msgstr "" "pokročilých funkcí, které obvykle nejsou potřeba. Je také k dispozici webový " "terminál pro operace na příkazovém řádku." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1163,7 +1164,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -1178,18 +1179,18 @@ msgstr "" "\"{users_url}\">uživatele s účtem na {box_name}, náležejícím do skupiny " "admin." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Správa serveru" @@ -1352,7 +1353,7 @@ msgstr "Jsou zobrazovány pokročilé aplikace a funkce" msgid "Hiding advanced apps and features" msgstr "Jsou skryté pokročilé aplikace a funkce" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1360,7 +1361,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as /deluge umístění na webovém serveru. Výchozí heslo je „deluge“, ale " "hned po zapnutí této služby se okamžitě přihlaste a změňte ho." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Stahovat soubory pomocí BitTorrent aplikací" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "Webový klient sítě BitTorrent" @@ -1499,14 +1500,14 @@ msgid "Diagnostics" msgstr "Diagnostika" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 #, fuzzy #| msgid "Quassel" msgid "passed" msgstr "Quassel" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 #, fuzzy #| msgid "Setup failed." @@ -1514,7 +1515,7 @@ msgid "failed" msgstr "Nastavování se nezdařilo." #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "" @@ -1603,7 +1604,7 @@ msgstr "Výsledek" msgid "Diagnostic Test" msgstr "Diagnostické testy" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1611,12 +1612,12 @@ msgstr "" "diaspora* je decentralizovaná společenská síť na které svá vlastní data " "uchováváte a ovládáte vy." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Decentralizovaná společenská síť" @@ -1677,7 +1678,7 @@ msgstr "Registrace uživatelů zapnuta" msgid "User registrations disabled" msgstr "Registrace uživatelů vypnuta" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1688,7 +1689,7 @@ msgstr "" "(např. každých 24h), může pro ostatní být být těžké najít vás na Internetu. " "Toto ostatním zabrání nalézt služby, které jsou poskytovány tímto {box_name}." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1706,11 +1707,11 @@ msgstr "" "někdo z Internetu zeptá na váš DNS název, dostane odpověď s vaší současnou " "IP adresou." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Klient dynamické DNS" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Název dynamické domény" @@ -1952,7 +1953,7 @@ msgstr "Nastavit dynamický DNS" msgid "Dynamic DNS Status" msgstr "Stav dynamického DNS" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1960,7 +1961,7 @@ msgstr "" "XMPP je otevřený a standardizovaný komunikační protokol. Zde je možné " "nastavit a spustit vlastní XMPP server, zvaný ejabberd." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web clientXMPP klienta. Když je zapnutý, ejabberd je přístupný " "libovolnému uživateli s účtem na {box_name}." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Chat server" @@ -2114,50 +2115,20 @@ msgstr "Chat server" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Chyba při nastavování doménového názvu: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Available Domains" @@ -2186,18 +2157,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Žádný certifikát" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "Neplatný název serveru" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "Neplatný název serveru" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Doména" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Aliases" +msgstr "Spravovat repozitáře" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Zapnuto" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Vypnuto" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2216,191 +2232,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Repositories" msgid "Manage Aliases" msgstr "Spravovat repozitáře" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Vypnuto" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "kabel je připojen" +#| msgid "Enabled" +msgid "Enable" +msgstr "Zapnuto" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Deleted selected snapshots" -msgid "Delete selected" -msgstr "Označené zachycené stavy smazány" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Vytvořit novou zálohu" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Přidat" -#: plinth/modules/email_server/templates/email_domains.html:19 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domény" + +#: plinth/modules/email_server/templates/email_server.html:19 #, fuzzy -#| msgid "New Backup" -msgid "New value" -msgstr "Nová záloha" +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Spravovat zachycené stavy" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Aktualizovat" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Typ služby" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Download directory" -msgid "You do not have a home directory." -msgstr "Složka pro stahování" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "Vytvořit repozitář" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "Aktuální stav:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Nastavení doménového názvu" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Stav certifikátu" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Private repository" -msgid "Private key path" -msgstr "Neveřejný repozitář" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Domů" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Zabezpečení" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domény" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Zapnout poškozování" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Při nastavování se vyskytla chyba." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Vypnuto" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Nastavení se nezměnila" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2411,7 +2319,7 @@ msgstr "" "provoz na vašem {box_name}. Zapnutá a správně nastavená brána firewall " "snižuje riziko bezpečnostních hrozeb z Internetu." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Brána firewall" @@ -2452,19 +2360,6 @@ msgstr "" msgid "Service/Port" msgstr "Služba/port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Zapnuto" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Vypnuto" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Umožněno" @@ -2550,7 +2445,7 @@ msgstr "Spustit nastavení" msgid "Setup Complete" msgstr "Nastavení dokončeno" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2568,7 +2463,7 @@ msgstr "" "grafických klientů. A svoje zdrojové kódy můžete sdílet s lidmi z celého " "světa." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2576,15 +2471,15 @@ msgstr "" "Více o Git se dozvíte navštívením výuky Gitu." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Přístup do Git repozitářů pro čtení a zápis" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Jednoduché hostování Git" @@ -3025,7 +2920,7 @@ msgstr "O {box_name}" msgid "{box_name} Manual" msgstr "Příručka k {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3037,7 +2932,7 @@ msgstr "" "anonymitu posíláním provozu zašifrovaně, skrze dobrovolníky provozovanou síť " "rozprostřenou po celém světě." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3045,26 +2940,26 @@ msgstr "" "Více informací I2P naleznete na domovské stránce projektu." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" "První navštívení poskytovaného webového rozhraní spustí proces nastavení." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Spravovat aplikaci I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Anonymní síť" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2P proxy" @@ -3109,7 +3004,7 @@ msgstr "" "Soubory stahujete přidáním torrentů nebo vytvořením nového torrentu a " "sdílením souboru skrze něj." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -3127,7 +3022,7 @@ msgstr "" "komentáře a RSS kanály. Když je zapnuté, blogy a wiki budou dostupné na /ikiwiki (po vytvoření)." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3140,15 +3035,15 @@ msgstr "" "může upravovat ty stávající. V Nastavení " "uživatele můžete tato oprávnění změnit nebo přidat nové uživatele." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "wiki a blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Zobrazit a upravit wiki aplikace" @@ -3227,12 +3122,12 @@ msgstr "{title} dsmazáno." msgid "Could not delete {title}: {error}" msgstr "{title} se nepodařilo smazat: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted je server pro Gobby – textový editor pro spolupráci ve skupině." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3243,11 +3138,11 @@ msgstr "" "desktopového klienta a nainstalujte ho. Poté spusťte Gobby a zvolte " "„Připojit k serveru“ a zadejte doménový název svého {box_name}." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby server" @@ -3268,7 +3163,7 @@ msgstr "" "Spusťte Goggy a zvolte „Připojit k serveru“ a zadejte doménový název svého " "{box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3276,11 +3171,11 @@ msgstr "" "JSXC je webový klient pro XMPP. Typicky je používaný s lokálně provozovaným " "XMPP serverem." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Chatovací klient" @@ -3289,7 +3184,7 @@ msgstr "Chatovací klient" msgid "JavaScript license information" msgstr "Licenční informace o JavaScriptu" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3304,7 +3199,7 @@ msgstr "" "dokázáním, že je vlastníkem domény vůči Let's Encrypt, certifikační autoritě " "(CA)." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3316,15 +3211,15 @@ msgstr "" "(ISRG). Před použitím služby si přečtěte Podmínky používání Let's Encrypt." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Certifikáty" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3429,7 +3324,7 @@ msgstr "Certifikát pro doménu {domain} úspěšně smazán" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Nepodařilo se smazat certifikát pro doménu {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3446,14 +3341,14 @@ msgstr "" "čísla. Díky federování mohou uživatelé na daném Matrix serveru komunikovat " "s uživateli všech ostatních Matrix serverů." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3548,7 +3443,7 @@ msgstr "" "certifikát. Jděte na Let's Encrypt a " "získejte takový." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3560,7 +3455,7 @@ msgstr "" "skupině. Mediawiki je možné použít pro hostování wiki webových stránek, " "poznámek nebo pro spolupráci s přáteli na projektech." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3574,7 +3469,7 @@ msgstr "" "stránce Special:" "CreateAccount." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3582,12 +3477,12 @@ msgstr "" "Kdokoli kdo má odkaz na tuto wiki ji může číst. Měnit obsah mohou pouze " "uživatelé, kteří jsou přihlášení." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3683,7 +3578,7 @@ msgstr "Nastavení se nezměnila" msgid "Server URL updated" msgstr "Sdílení smazáno." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3696,11 +3591,11 @@ msgstr "" "serveru je třeba Minetest " "klient." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Pískoviště s kostkami" @@ -3770,7 +3665,7 @@ msgstr "Nastavení PVP aktualizováno" msgid "Damage configuration updated" msgstr "Nastavení poškozování aktualizováno" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3781,15 +3676,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3829,7 +3724,7 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3839,7 +3734,7 @@ msgstr "" "velkých souborů. Může se účastnit vícero peer-to-peer sítí, včetně eDonkey, " "Kademlia, Overnet, BitTorrent a DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3850,23 +3745,23 @@ msgstr "" "ovládat prostřednictvím libovolné mobilní či desktopové nadstavby nebo přes " "rozhraní telnet. Viz příručka." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" "Na {box_name}, stažené soubory se nacházejí ve složce /var/lib/mldonkey/ ." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Stahovat soubory pomocí eDonkey aplikací" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Pee-to-peer sdílení souborů" @@ -3878,7 +3773,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3898,7 +3793,7 @@ msgstr "" "naleznete v SSH dokumentaci k Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3916,7 +3811,7 @@ msgstr "" "nainstalovat nějaký software, který je k dispozici na webové stránce Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4041,7 +3936,7 @@ msgstr "Klíč zveřejněn na server s klíči." msgid "Error occurred while publishing key." msgstr "Při zveřejňování klíče došlo k chybě." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4049,7 +3944,7 @@ msgstr "" "Mumble je open source software pro šifrovanou, vysoce kvalitní hlasovou " "komunikaci s nízkou prodlevou." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4059,11 +3954,11 @@ msgstr "" "dispozici jsou klienti pro připojení z " "desktopu a Android zařízení." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Hlasový chat" @@ -4130,7 +4025,7 @@ msgstr "Všechny webové aplikace" msgid "Services" msgstr "Služba" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4138,17 +4033,17 @@ msgstr "" "Nastavit síťová zařízení. Připojit k Internetu přes ethernet, WiFi nebo " "PPPoE. Sdílet toto připojení s ostatními zařízeními na síti." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Sítě" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "S použitím DNSSEC na IPv{kind}" @@ -4652,6 +4547,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Toto připojení není aktivní." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Zabezpečení" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5149,7 +5049,7 @@ msgstr "Obecné" msgid "TUN or TAP interface" msgstr "Rozhraní" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5248,7 +5148,7 @@ msgstr "Připojení {name} smazáno." msgid "Failed to delete connection: Connection not found." msgstr "Smazání připojení se nezdařilo: Připojení nenalezeno." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5265,22 +5165,22 @@ msgstr "" "zvýšení zabezpečení a anonymity je také možné přistupovat k ostatku " "Internetu prostřednictvím {box_name}." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "Typ připojení" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Virtuální soukromá síť" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5360,7 +5260,7 @@ msgstr "" msgid "Download my profile" msgstr "Stáhnout si svůj profil" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5372,19 +5272,19 @@ msgstr "" "němu nejste připojení napřímo. Potřebujete ho pouze když jsou služby služby " "vašeho {box_name} nedostupné z Internetu. To zahrnuje následující situace:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} se nachází za omezující bránou firewall." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} je připojený k (bezdrátovému) směrovači, který není ve vaší " "správě." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5392,7 +5292,7 @@ msgstr "" "Váš poskytovatel připojení vám neposkytuje vnější (veřejnou) IP adresu a " "namísto toho poskytuje připojení prostřednictvím NAT překladu." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5400,11 +5300,11 @@ msgstr "" "Váš poskytovatel připojení vám neposkytuje pevnou IP adresu a ta se proto " "mění pokaždé, když se připojíte k Internetu." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Váš poskytovatel připojení k Internetu omezuje příchozí spojení." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5424,15 +5324,15 @@ msgstr "" "\">pagekite.net. V budoucnu si pro toto může být možné s kamarádem " "smluvit využití jeho {box_name}." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Viditelnost na veřejnosti" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "PageKite doména" @@ -5585,25 +5485,25 @@ msgstr "" "Viz instrukce pro nastavení SSH klienta" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" @@ -5677,7 +5577,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Vypnout nyní" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5687,7 +5587,7 @@ msgstr "" "zlepšujícími soukromí, upravující data webových stánek a HTTP hlaviček, " "řídící přístup a odebírající reklamy a ostatní otravné Internetové smetí. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5702,20 +5602,20 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ nebo http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Webová proxy" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Přistupte {url} s proxy {proxy} na tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5732,7 +5632,7 @@ msgstr "" "více Quassel klientů z desktopu nebo mobilu může být použito pro připojení " "nebo odpojení od něj." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktopu a mobilních zařízení." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC klient" @@ -5756,7 +5656,7 @@ msgstr "IRC klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5776,7 +5676,7 @@ msgstr "" "a>. K Radicale je možné přistupovat pomocí libovolného uživatelského účtu na " "{box_name}." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5786,12 +5686,12 @@ msgstr "" "nových kalendářů a adresářů kontaktů. Nepodporuje přidávání událostí či " "kontaktů, to je třeba dělat v tomu určeném klientovi." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Kalendář a adresář kontaktů" @@ -5875,7 +5775,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Nastavení přístupových práv aktualizováno" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5888,7 +5788,7 @@ msgstr "" "klienta, včetně podpory MIME, adresáře kontaktů, manipulace se složkami, " "vyhledávání ve zprávách a kontrolou pravopisu." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5909,7 +5809,7 @@ msgstr "" "mailu, jako imap.example.com. Pro IMAP přes SSL (doporučeno), " "vyplňte kolonku server jakoimaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5925,17 +5825,17 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "E-mailový klient" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5944,31 +5844,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Distributed File Storage" msgid "Network File Storage" @@ -6104,7 +6004,7 @@ msgstr "Sdílení upraveno." msgid "Error disabling share: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6112,7 +6012,7 @@ msgstr "" "Searx je soukromí respektující metavyhledavač na Internetu. Slučuje a " "zobrazuje výsledky z vícero vyhledávačů." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6120,15 +6020,15 @@ msgstr "" "Použitím Searx je možné se vyhnout sledování a profilování vyhledávači. Ve " "výchozím stavu neukládá žádné cookie." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Hledat na webu" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Vyhledávání na webu" @@ -6301,11 +6201,11 @@ msgstr "Chyba při nastavování omezeného přístupu: {exception}" msgid "Updated security configuration" msgstr "Nastavení zabezpečení aktualizováno" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli umožňuje ukládat a sdílet záložky." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6319,15 +6219,15 @@ msgstr "" "shaarli na webovém serveru. Poznamenejme, že Shaarli podporuje pouze " "jeden uživatelský účet, který bude třeba nastavit při první návštěvě." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Záložky" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6337,7 +6237,7 @@ msgstr "" "vašeho Internetového provozu. Je možné ji použít pro obejití filtrování " "Internetu a cenzury." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6350,7 +6250,7 @@ msgstr "" "připojit k této proxy a jejich data budou šifrována a posílána " "prostřednictvím Shadowsocks serveru." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6358,11 +6258,11 @@ msgstr "" "Pro použití Shadowsocks po nastavení, nastavte SOCKS5 proxy URL adresu ve " "svém zařízení, prohlížeči nebo aplikaci na http://adresa_freedombox:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Socks5 proxy" @@ -6508,7 +6408,7 @@ msgstr "Upravit sdílení" msgid "Share deleted." msgstr "Sdílení smazáno." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6518,7 +6418,7 @@ msgstr "" "souborového systému btrfs. Ty je možné použít pro vrácení systému do " "dřívějšího funkčního stavu v případě nechtěných změn." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6529,7 +6429,7 @@ msgstr "" "osy) a také před a po instalaci software. Nejstarší zachycené stavy budou " "automaticky mazány podle níže uvedených nastavení." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups, protože mohou být ukládány pouze na stejném oddílu, " "jako živá data. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Zachycené stavy datového úložiště" @@ -6754,7 +6654,7 @@ msgstr "Pro dokončení obnovy ze zálohy je třeba systém restartovat." msgid "Rollback to Snapshot" msgstr "Vrátit do podoby zachyceného stavu" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6766,7 +6666,7 @@ msgstr "" "spojení provádět úkoly správy, kopírovat soubory nebo spouštět ostatní " "služby." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Server zabezpečeného shellu (SSH)" @@ -6811,7 +6711,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "Ověření vůči vzdálenému serveru se nezdařilo." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Sdružené přihlášení (SSO)" @@ -6819,7 +6719,7 @@ msgstr "Sdružené přihlášení (SSO)" msgid "Login" msgstr "Přihlášení" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6830,91 +6730,91 @@ msgstr "" "{box_name}. Lze zobrazit úložná zařízení, která jsou využívána, připojovat a " "odpojovat ta vyjímatelná." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Úložiště" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bajtů" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Operace se nezdařila." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Operace byla zrušena." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Toto zařízení už je odpojováno (umount)." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "Operace není podporována z důvodu chybějící podpory ovladače/nástroje." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Časový limit aplikace překročen." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Operace by probudila disk který je v režimu hlubokého spánku." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Pokus o odpojení zařízení které je zaneprázdněno." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Operace už byla zrušena." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Chybí oprávnění pro provedení požadované operace." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Toto zařízení je už připojeno (mount)." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Zařízení není připojeno." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Není umožněno použít požadovanou volbu." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Zařízení je připojeno jiným uživatelem." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -6924,15 +6824,15 @@ msgstr "" "Varování: Dochází volné místo na systémovém oddílu ({percent_used}% využito, " "{free_space} volné)." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7061,7 +6961,7 @@ msgstr "Zařízení je možné bezpečně odebrat." msgid "Error ejecting device: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7073,7 +6973,7 @@ msgstr "" "smazání souborů na jednom zařízení bude automaticky replikováno na veškerá " "zařízení, na kterých také provozujete Syncthing." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, fuzzy, python-brace-format #| msgid "" #| "Running Syncthing on {box_name} provides an extra synchronization point " @@ -7098,20 +6998,20 @@ msgstr "" "být synchronizována do odlišné sady složek. Webové rozhraní {box_name} je k " "dispozici pouze pro uživatele náležející do skupiny „admin“." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Spravovat aplikaci Syncthing" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Synchronizace souborů" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7123,7 +7023,7 @@ msgstr "" "poskytovateli nezávislé zabezpečení. I když některé z uzlů přestanou " "fungovat, své soubory můžete získat ze zbývajících uzlů." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7133,11 +7033,11 @@ msgstr "" "Tento {box_name} nese ve výchozím stavu úložný uzel a uvaděč. Je možné " "přidat další uvaděče, které představí tento uzel ostatním úložným uzlům." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Distribuované souborové úložiště" @@ -7176,7 +7076,7 @@ msgstr "Připojené uvaděče" msgid "Remove" msgstr "Odebrat" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7190,42 +7090,42 @@ msgstr "" "prohlížeč Tor Browser." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor skrytá služba" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Předávájící Tor most" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Port Tor předávání k dispozici" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 transport zaregistrován" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 transport zaregistrován" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Přistoupit k URL adrese {url} na tcp{kind} prostřednictvím Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Potvrdit použití Tor na {url} na tcp{kind}" @@ -7381,17 +7281,13 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS port je k dispozici na vašem %(box_name)s na TCP portu 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Nastavení se nezměnila" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission je BitTorrent klient který poskytuje webové uživatelské " "rozhraní." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7404,16 +7300,16 @@ msgstr "" "Transmision obsluhuje sdílení souborů Bitorrent. Poznamenejme, že BitTorrent " "není anonymní." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7422,7 +7318,7 @@ msgstr "" "Tiny Tiny RSS je čtečka a slučovač novinek (RSS/Atom), navržená pro čtení " "odkudkoli, ale s pohodlím podobným desktopové aplikaci." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -7436,7 +7332,7 @@ msgstr "" "\">/tt-rss umístění na webovém serveru. Je přístupné pro libovolného uživatele s účtem na {box_name}." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -7448,15 +7344,15 @@ msgstr "" "Při používání mobilní nebo desktopové aplikace pro Tiny Tiny RSS použijte " "pro připojování URL adresu /tt-rss-app." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Číst a přihlásit se k odběru novinek" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Čtečka novinek" @@ -7464,13 +7360,13 @@ msgstr "Čtečka novinek" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Zjistit dostupnost a uplatnit nejnovější aktualizace a opravy zabezpečení." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7478,36 +7374,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Aktualizovat" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update" msgid "Updates" msgstr "Aktualizovat" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" msgstr "Nadace FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "Automatické aktualizace vypnuty" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7707,14 +7610,14 @@ msgstr "Spouštění přechodu na novější verzi se nezdařilo." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7722,15 +7625,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Uživatelé a skupiny" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Přístup ke všem službám a nastavení systému" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zkontrolujte LDAP položku „{search_item}“" @@ -7994,18 +7897,18 @@ msgstr "Změnit heslo" msgid "Password changed successfully." msgstr "Heslo úspěšně změněno." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8367,7 +8270,7 @@ msgstr "Smazat připojení" msgid "Server deleted." msgstr "Sdílení smazáno." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8376,7 +8279,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8385,28 +8288,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Adresa" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8424,7 +8327,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8437,7 +8340,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8445,11 +8348,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8485,23 +8388,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Obecné" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Chyba při instalaci" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "Instalace" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "stahování" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "změna média" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "soubor s nastaveními: {file}" @@ -8580,6 +8483,10 @@ msgstr "Základní funkce a webové rozhraní pro %(box_name)s" msgid " Home" msgstr " Domů" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Domů" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Aplikace" @@ -8888,6 +8795,71 @@ msgstr "%(percentage)s%% dokončeno" msgid "Gujarati" msgstr "gudžarátština" +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Vypnuto" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "kabel je připojen" + +#, fuzzy +#~| msgid "Deleted selected snapshots" +#~ msgid "Delete selected" +#~ msgstr "Označené zachycené stavy smazány" + +#, fuzzy +#~| msgid "New Backup" +#~ msgid "New value" +#~ msgstr "Nová záloha" + +#, fuzzy +#~| msgid "Download directory" +#~ msgid "You do not have a home directory." +#~ msgstr "Složka pro stahování" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "Vytvořit repozitář" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "Aktuální stav:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Nastavení doménového názvu" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Stav certifikátu" + +#, fuzzy +#~| msgid "Private repository" +#~ msgid "Private key path" +#~ msgstr "Neveřejný repozitář" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Zapnout poškozování" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Vypnuto" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Není možné smazat účet jediného zbývajícího správce systému." diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index 70b006914..21e523876 100644 --- a/plinth/locale/da/LC_MESSAGES/django.po +++ b/plinth/locale/da/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Danish calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1037,15 +1038,15 @@ msgstr "" "Kun brugere der tilhører calibre-gruppen har adgang til appen. Alle " "brugere med adgang kan benytte alle samlingerne." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Brug calibre e-bogssamlinger" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "E-bogssamling" @@ -1119,7 +1120,7 @@ msgstr "{name} slettet." msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1132,7 +1133,7 @@ msgstr "" "for mange avancerede funktioner som typisk ikke påkræves. En web-baseret " "terminal til kørsel af konsolkommandoer er ligeledes tilgængelig." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1144,7 +1145,7 @@ msgstr "" "brugerdefinerede porte i systemets firewall, samt avanceret " "netværkshåndtering såsom bonding, bridging og håndtering af VLAN." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1153,7 +1154,7 @@ msgstr "" "Det kan tilgås af enhver bruger på {box_name} " "som tilhører administratorgruppen." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1161,12 +1162,12 @@ msgstr "" "Cockpit skal tilgås via et domænenavn. Det fungerer ikke hvis det tilgås med " "en IP-adresse som en del af webadressen." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Serveradministration" @@ -1328,7 +1329,7 @@ msgstr "Viser avancerede applikationer og funktionalitet" msgid "Hiding advanced apps and features" msgstr "Skjuler avancerede applikationer og funktionalitet" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1340,7 +1341,7 @@ msgstr "" "WebRTC, SIP og andre kommunikationsservere kan bruge dette til at oprette et " "opkald mellem parter der ellers ikke kan oprette forbindelse til hinanden." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, fuzzy, python-brace-format #| msgid "" #| "It is not meant to be used directly by users. Servers such as matrix-" @@ -1353,11 +1354,11 @@ msgstr "" "Den er ikke beregnet til at blive anvendt direkte af brugerne. Servere såsom " "matrix-synapse skal konfigureres med detaljerne som er angivet her." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "VoIP-hjælper" @@ -1388,7 +1389,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Brug den følgende delte autentifikationshemmelighed:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1396,11 +1397,11 @@ msgstr "" "Netværkstidsserver er et program der holder systemets tid synkroniseret med " "servere på internettet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Dato & Tid" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Tid synkroniseret med NTP-server" @@ -1429,11 +1430,11 @@ msgstr "Kunne ikke sætte tidszone: {exception}" msgid "Time zone set" msgstr "Tidszone gemt" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge er en BitTorrent-klient som har et webbaseret brugerinterface." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1441,17 +1442,17 @@ msgstr "" "Standardkodeordet er 'deluge', men du bør logge ind og ændre det så snart du " "har aktiveret denne tjeneste." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Download filer ved hjælp af BitTorrent-applikationer" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "BitTorrent Webklient" @@ -1477,18 +1478,18 @@ msgid "Diagnostics" msgstr "Diagnosticering" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "lykkedes" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "mislykkedes" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "fejl" @@ -1579,7 +1580,7 @@ msgstr "Resultat" msgid "Diagnostic Test" msgstr "Diagnostisk Test" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1587,12 +1588,12 @@ msgstr "" "diaspora* er et decentraliseret socialt netværk hvor du selv kan lagre og " "kontrollere dine egne data." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Føderativt socialt netværk" @@ -1653,7 +1654,7 @@ msgstr "Indregistrering af brugere aktiveret" msgid "User registrations disabled" msgstr "Indregistrering af brugere deaktiveret" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1664,7 +1665,7 @@ msgstr "" "døgnet), kan det være svært for andre at finde dig på internettet. Dette vil " "forhindre andre i at finde de tjenester denne {box_name} udbyder." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1681,11 +1682,11 @@ msgstr "" "opdatere dit DNS-navn med den nye IP-adresse, således at hvis nogen på " "internettet spørger til adressen vil de få din aktuelle IP-adresse." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Dynamisk DNS Klient" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Dynamisk domænenavn" @@ -1918,7 +1919,7 @@ msgstr "Konfigurer Dynamisk DNS" msgid "Dynamic DNS Status" msgstr "Dynamisk DNS Status" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1926,7 +1927,7 @@ msgstr "" "XMPP er en åben og standardiseret kommunikationsprotokol. Her kan du " "aktivere og konfigurere din XMPP-server, kaldet ejabberd." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web client bruger med adgang til {box_name}." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Chatserver" @@ -2081,50 +2082,20 @@ msgstr "Chatserver" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Kunne ikke sætte domænenavn: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Available Domains" @@ -2153,18 +2124,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Intet certifikat" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "Ugyldigt servernavn" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "Ugyldigt servernavn" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domæne" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Håndter samlinger" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Aktiveret" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Deaktiveret" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 #, fuzzy #| msgid "Enable Roundcube" @@ -2183,191 +2199,85 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Håndter samlinger" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Deaktiveret" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "kabel forbundet" +#| msgid "Enabled" +msgid "Enable" +msgstr "Aktiveret" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete %(name)s" -msgid "Delete selected" -msgstr "Slet %(name)s" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Opret en ny sikkerhedskopi" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 #, fuzzy #| msgid "Address" msgid "Add" msgstr "Adresse" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domæner" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Opdater" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Create User" +msgid "Manage Spam" +msgstr "Opret Bruger" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Servicetype" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Download directory" -msgid "You do not have a home directory." -msgstr "Download-mappe" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "Opret lager" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "Nuværende status:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Certificates (Let's Encrypt)" -msgid "Use Let's Encrypt" -msgstr "Certifikater (Let's Encrypt)" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Domænenavn gemt" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Certifikat Status" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create User" -msgid "Private key path" -msgstr "Opret Bruger" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Sikkerhed" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domæner" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable PageKite" -msgid "Enabled aliases" -msgstr "Aktiver PageKite" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Der opstod en fejl under konfigurationen." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Deaktiveret" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Indstilling uændret" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2378,7 +2288,7 @@ msgstr "" "på din{box_name}. At holde en firewall aktiveret og velkonfigureret " "reducerer risikoen for sikkerhedstrusler fra internettet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Firewall" @@ -2414,19 +2324,6 @@ msgstr "" msgid "Service/Port" msgstr "Tjeneste/Port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Aktiveret" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Deaktiveret" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Tilladt" @@ -2512,7 +2409,7 @@ msgstr "Start Konfiguration" msgid "Setup Complete" msgstr "Konfiguration Færdig" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2530,7 +2427,7 @@ msgstr "" "klient til kommandolinjen eller med flere tilgængelige grafiske klienter. Og " "så kan du dele din kode med mennesker over hele kloden." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2538,15 +2435,15 @@ msgstr "" "For at lære med om hvordan du bruger Git kan du besøge Git-vejledningen." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Læse- og skriveadgang til Git-repositorier" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Simpel Git-hosting" @@ -2986,7 +2883,7 @@ msgstr "Om {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Brugervejledning" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2994,7 +2891,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki-siden." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktiver applikation" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "Tor Anonymiseringstjeneste" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -3067,7 +2964,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -3084,7 +2981,7 @@ msgstr "" "kommentarer og RSS-feeds. Når aktiveret, vil blogge og wikier være " "tilgængelige på /ikiwiki." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3093,19 +2990,19 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 #, fuzzy #| msgid "wiki" msgid "ikiwiki" msgstr "wiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 #, fuzzy #| msgid "Wiki & Blog" msgid "Wiki and Blog" msgstr "Wiki & Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -3188,11 +3085,11 @@ msgstr "{name} slettet." msgid "Could not delete {title}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3200,11 +3097,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -3225,17 +3122,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 #, fuzzy #| msgid "IRC Client (Quassel)" msgid "Chat Client" @@ -3246,7 +3143,7 @@ msgstr "IRC-klient (Quassel)" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -3267,7 +3164,7 @@ msgstr "" "Dette gøres ved at bekræfte overfor Let's Encrypt, en certifikat-autoritet " "(CA), at den har ejerskab over domænet." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -3287,19 +3184,19 @@ msgstr "" "org/repository/\">Let's Encrypts abonnementsbetingelser inden tjenesten " "tages i anvendelse." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "Certifikater (Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "Certifikat Status" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3412,7 +3309,7 @@ msgstr "Certifikatet for domænet {domain} blev trukket tilbage" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Fejl ved tilbagetrækning af certifikatet for domænet {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3422,14 +3319,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 #, fuzzy #| msgid "Chat Server (XMPP)" msgid "Matrix Synapse" @@ -3511,7 +3408,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3519,7 +3416,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3528,18 +3425,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3645,7 +3542,7 @@ msgstr "Indstilling uændret" msgid "Server URL updated" msgstr "{name} slettet." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3658,11 +3555,11 @@ msgstr "" "For at forbinde til serveren skal der bruges en Minetest klient." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 #, fuzzy #| msgid "Block Sandbox (Minetest)" msgid "Block Sandbox" @@ -3744,7 +3641,7 @@ msgstr "Konfiguration opdateret" msgid "Damage configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3755,15 +3652,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" @@ -3805,38 +3702,38 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy #| msgid "Monkeysphere" msgid "MLDonkey" msgstr "Monkeysphere" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" @@ -3854,7 +3751,7 @@ msgstr "Monkeysphere" msgid "AMLDonkey" msgstr "Monkeysphere" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3875,7 +3772,7 @@ msgstr "" "info/getting-started-ssh/\">Monkeysphere SSH-dokumentationen for flere " "detaljer." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3894,7 +3791,7 @@ msgstr "" "href=\"https://web.monkeysphere.info/download/\">Monkeysphere hjemmesiden." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4018,7 +3915,7 @@ msgstr "Nøgle distribueret til nøgleserver." msgid "Error occurred while publishing key." msgstr "Fejl under distribuering af nøgle." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4026,7 +3923,7 @@ msgstr "" "Mumble er open source software der tilbyder en højkvalitets tale-tjeneste " "med lav forsinkelse og kryptering." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4036,11 +3933,11 @@ msgstr "" "Klienter til computere og Android-enheder " "er tilgængelige." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -4099,23 +3996,23 @@ msgstr "" msgid "Services" msgstr "Tjeneste" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Netværk" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruger DNSSEC på IPv{kind}" @@ -4634,6 +4531,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Denne forbindelse er ikke aktiv." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Sikkerhed" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5128,7 +5030,7 @@ msgstr "generisk" msgid "TUN or TAP interface" msgstr "TUN eller TAP interface" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5222,7 +5124,7 @@ msgstr "Slettede forbindelse {name}." msgid "Failed to delete connection: Connection not found." msgstr "Kunne ikke slette forbindelse: Forbindelse ikke fundet." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5239,26 +5141,26 @@ msgstr "" "af {box_name}. Du kan også tilgå resten af internettet igennem {box_name} " "for øget sikkerhed og anonymitet." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "Forbindelsestype" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "OpenVPN" msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "Virtuelt Privat Netværk (OpenVPN)" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5339,7 +5241,7 @@ msgstr "" msgid "Download my profile" msgstr "Hent min profil" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5352,19 +5254,19 @@ msgstr "" "hvis {box_name} tjenester ikke kan nås fra resten af internettet. Dette " "inkluderer de følgende situationer:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} er bag en restriktiv firewall." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} er forbundet til en (trådløs) router som du ikke selv " "kontrollerer." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5372,7 +5274,7 @@ msgstr "" "Din internetudbyder tildeler dig ikke en ekstern IP-adresse, men giver dig " "forbindelse gennem NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 #, fuzzy #| msgid "" #| "Your ISP does not provide you a static IP address and your IP address " @@ -5384,11 +5286,11 @@ msgstr "" "Din internetudbyder tildeler dig ikke en fast IP-adresse, og din IP-adresse " "ændres hver gang du fobinder til nettet." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Din internetudbyder begrænser indgående forbindelser." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5408,19 +5310,19 @@ msgstr "" "net. I fremtiden vil det måske blive muligt at bruge din vens {box_name} " "til dette." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 #, fuzzy #| msgid "Pagekite" msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 #, fuzzy #| msgid "Public Visibility (PageKite)" msgid "Public Visibility" msgstr "Offentlig Tilgængelighed (PageKite)" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 #, fuzzy #| msgid "PageKite Account" msgid "PageKite Domain" @@ -5576,25 +5478,25 @@ msgstr "" "Se instruktioner for opsætning af SSH-klient" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" @@ -5665,7 +5567,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Sluk Nu" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5676,7 +5578,7 @@ msgstr "" "HTTP-headers, styre adgang og fjerne reklamer og andet vedderstyggeligt " "internetskrald. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5691,24 +5593,24 @@ msgstr "" "på http://config.privoxy.org/ " "eller http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "Aktiver Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "Privoxy Webproxy" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgå {url} med proxy {proxy} ved brug af tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5725,7 +5627,7 @@ msgstr "" "kontinuerligt online, og du vil kunne bruge en eller flere Quassel-klienter " "fra en computer eller en mobil til at forbinde til den." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your computer og mobile enhed er tilgængelige." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -5751,7 +5653,7 @@ msgstr "Quassel IRC-klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5772,19 +5674,19 @@ msgstr "" "carddav-clients\">understøttet klient-applikation. Radicale kan tilgås " "af enhver bruger der har et log ind til {box_name}." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 #, fuzzy #| msgid "Calendar and Addressbook (Radicale)" msgid "Calendar and Addressbook" @@ -5857,7 +5759,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5869,7 +5771,7 @@ msgstr "" "du forventer af en emailklient, inklusiv MIME-understøttelse, lagring af " "kontaktpersoner, mappe-administration, beskedsøgning og stavekontrol." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5890,7 +5792,7 @@ msgstr "" "example.com. Vil du bruge IMAP over SSL (hvilket anbefales) skal du " "også angive protokollen således imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5907,19 +5809,19 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Email Client" msgstr "Emailklient (Roundcube)" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5928,31 +5830,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -6084,27 +5986,27 @@ msgstr "{name} slettet." msgid "Error disabling share: {error_message}" msgstr "Kunne ikke installere applikation: {error}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 #, fuzzy #| msgid "Web Server" msgid "Web Search" @@ -6282,11 +6184,11 @@ msgstr "Kunne ikke sætte tidszone: {exception}" msgid "Updated security configuration" msgstr "Generel Konfiguration" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli tillader dig at gemme og dele bogmærker." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6300,24 +6202,24 @@ msgstr "" "shaarli på webserveren. Bemærk at Shaarli kun understøtter en enkelt " "brugerkonto, som skal sættes op ved det første besøg." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 #, fuzzy #| msgid "Bookmarks (Shaarli)" msgid "Bookmarks" msgstr "Bogmærker (Shaarli)" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6326,17 +6228,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -6485,14 +6387,14 @@ msgstr "Rediger Bruger" msgid "Share deleted." msgstr "{name} slettet." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6500,14 +6402,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 #, fuzzy #| msgid "Create User" msgid "Storage Snapshots" @@ -6723,7 +6625,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6731,7 +6633,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -6778,7 +6680,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6786,7 +6688,7 @@ msgstr "" msgid "Login" msgstr "Log ind" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6794,117 +6696,117 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "reStore" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "repro-tjenesten er aktiv" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "Denne tjeneste eksisterer allerede" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro-tjenesten er ikke aktiv" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7034,7 +6936,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7042,7 +6944,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7054,22 +6956,22 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" msgstr "Installer denne applikation?" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7077,7 +6979,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7085,11 +6987,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -7126,7 +7028,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7140,43 +7042,43 @@ msgstr "" "du bruger Tor-browseren." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor Skjult Tjeneste" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 #, fuzzy msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Tor videresendelsesport tilgængelig" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registreret" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registreret" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tilgå URL {url} ved brug af tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekræft brug af Tor på {url} ved brug af tcp{kind}" @@ -7326,16 +7228,12 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "En Tor SOCKS-port er tilgængelig på din %(box_name)s TCP-port 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Indstilling uændret" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission er en BitTorrent-klient som har et webbaseret brugerinterface." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7343,18 +7241,18 @@ msgstr "" "BitTorrent er en peer-to-peer/P2P (decentral) fildelingsprotokol. Bemærk at " "BitTorrent ikke anonymiserer trafik." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Transmission" msgstr "Transmission BitTorrent" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7364,7 +7262,7 @@ msgstr "" "er designet til at læse nyheder på farten, men samtidig føles så meget som " "en rigtig desktop-applikation som muligt." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -7376,21 +7274,21 @@ msgstr "" "Når aktiveret, vil Tiny Tiny RSS være tilgængelige på stien /tt-rss på webserveren." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 #, fuzzy #| msgid "News Feed Reader (Tiny Tiny RSS)" msgid "News Feed Reader" @@ -7400,12 +7298,12 @@ msgstr "Nyhedsstrømlæser (Tiny Tiny RSS)" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7413,36 +7311,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Opdater" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update" msgid "Updates" msgstr "Opdater" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" msgstr "FreedomBox Brugervejledning" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "Automatisk opdatering deaktiveret" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7647,14 +7552,14 @@ msgstr "Kunne ikke starte opdatering." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7662,15 +7567,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Brugere og Grupper" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrol af LDAP-konfiguration \"{search_item}\"" @@ -7934,18 +7839,18 @@ msgstr "Ændr kodeord" msgid "Password changed successfully." msgstr "Kodeord blev ændret." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8291,7 +8196,7 @@ msgstr "Slet Forbindelse" msgid "Server deleted." msgstr "{name} slettet." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8300,7 +8205,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8309,28 +8214,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Adresse" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki & Blog" msgid "Website and Blog" @@ -8348,7 +8253,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8361,7 +8266,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8369,11 +8274,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8409,23 +8314,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Fejl under installation" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "Installerer" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "downloader" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "medie-ændring" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -8503,6 +8408,10 @@ msgstr "Plinth administrationsværktøj til %(box_name)s" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Apps" @@ -8797,6 +8706,66 @@ msgstr "%(percentage)s%% færdig" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Deaktiveret" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "kabel forbundet" + +#, fuzzy +#~| msgid "Delete %(name)s" +#~ msgid "Delete selected" +#~ msgstr "Slet %(name)s" + +#, fuzzy +#~| msgid "Download directory" +#~ msgid "You do not have a home directory." +#~ msgstr "Download-mappe" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "Opret lager" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "Nuværende status:" + +#, fuzzy +#~| msgid "Certificates (Let's Encrypt)" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Certifikater (Let's Encrypt)" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Domænenavn gemt" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Certifikat Status" + +#, fuzzy +#~| msgid "Create User" +#~ msgid "Private key path" +#~ msgstr "Opret Bruger" + +#, fuzzy +#~| msgid "Enable PageKite" +#~ msgid "Enabled aliases" +#~ msgstr "Aktiver PageKite" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Deaktiveret" + #~ msgid "Message Archive Management enabled" #~ msgstr "Håndtering af beskedarkiver aktiveret" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index e00d08119..14b37b623 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-11-02 13:36+0000\n" "Last-Translator: Johannes Keyser \n" "Language-Team: German calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1060,15 +1061,15 @@ msgstr "" "Nur Benutzer der calibre Gruppe können auf die App zugreifen. Alle " "Benutzer mit Zugangsberechtigung können alle Bibliotheken nutzen." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Verwenden von Calibre-E-Book-Bibliotheken" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "E-Book-Bibliothek" @@ -1142,7 +1143,7 @@ msgstr "{name} gelöscht." msgid "Could not delete {name}: {error}" msgstr "{name} konnte nicht gelöscht werden: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1156,7 +1157,7 @@ msgstr "" "Zusätzlich ist eine Kommandozeile im Webbrowser enthalten, um direkt Befehle " "einzugeben." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1169,7 +1170,7 @@ msgstr "" "Anschlüsse und erweiterte Netzwerkfunktionen wie bonding, bridging und VLAN-" "Management." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1178,7 +1179,7 @@ msgstr "" "Auf sie kann von jedem Benutzer auf der " "{box_name} zugegriffen werden, der zur Administratorgruppe gehören." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1187,12 +1188,12 @@ msgstr "" "funktioniert nicht, wenn auf eine IP-Adresse als Teil der URL zugegriffen " "wird." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Serververwaltung" @@ -1357,7 +1358,7 @@ msgstr "Zeige erweiterte Anwendungen und Funktionen an" msgid "Hiding advanced apps and features" msgstr "Ausblenden von erweiterten Apps und Funktionen" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1370,7 +1371,7 @@ msgstr "" "verwenden, um eine Verbindung zwischen Parteien herzustellen, die sich sonst " "nicht miteinander verbinden können." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as ejabberd müssen mit den hier angegebenen Details " "konfiguriert werden." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "VoIP-Helfer" @@ -1418,7 +1419,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Verwenden Sie das folgende geteilte Authentifizierungsgeheimnis:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1426,11 +1427,11 @@ msgstr "" "Der Netzwerk-Zeitserver hält Ihre Systemzeit synchron mit Servern im " "Internet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Datum und Uhrzeit" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Zeit synchronisiert mit NTP-Server" @@ -1459,11 +1460,11 @@ msgstr "Fehler beim Setzen der Zeitzone: {exception}" msgid "Time zone set" msgstr "Zeitzone gesetzt" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge ist ein BitTorrent-Client mit einer Weboberfläche." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1471,17 +1472,17 @@ msgstr "" "Das Standardkennwort ist 'deluge'; Sie sollten sich aber anmelden und es " "sofort ändern, nachdem Sie diesen Dienst aktiviert haben." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Dateien mit BitTorrent herunterladen" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "BitTorrent-Webclient" @@ -1507,18 +1508,18 @@ msgid "Diagnostics" msgstr "Diagnose" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "bestanden" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "gescheitert" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "Fehler" @@ -1610,7 +1611,7 @@ msgstr "Ergebnis" msgid "Diagnostic Test" msgstr "Diagnose" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1618,12 +1619,12 @@ msgstr "" "diaspora* ist ein dezentrales soziales Netzwerk, in dem Sie Ihre Daten " "selbst speichern und kontrollieren können." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Verteiltes Soziales Netzwerk" @@ -1684,7 +1685,7 @@ msgstr "Registrierung neuer Benutzer aktiviert" msgid "User registrations disabled" msgstr "Registrierung neuer Benutzer deaktiviert" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1696,7 +1697,7 @@ msgstr "" "zu finden. Dadurch werden andere daran gehindert, jene Dienste zu finden, " "die von Ihrer {box_name} angeboten werden." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1714,11 +1715,11 @@ msgstr "" "der neuen IP zuweisen, und wenn jemand aus dem Internet nach Ihrem DNS-Namen " "fragt, erhält er eine Antwort mit Ihrer aktuellen IP-Adresse." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Dynamischer DNS-Client" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Dynamischer Domain-Name" @@ -1957,7 +1958,7 @@ msgstr "Dynamisches DNS konfigurieren" msgid "Dynamic DNS Status" msgstr "Status Dynamisches DNS" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1965,7 +1966,7 @@ msgstr "" "XMPP ist ein offenes und standardisiertes Kommunikationsprotokoll. Hier " "können Sie Ihren XMPP-Server, genannt ejabberd, starten und konfigurieren." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web client Benutzer mit einem " "{box_name} Login aufgerufen werden." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn-App oder konfiguriere einen externen " "Server." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Chatserver" @@ -2131,48 +2132,18 @@ msgstr "E-Mail Server" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Betrieben mit Postfix, Dovecot und Rspamd" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "Der Alias wurde übernommen" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "Muss mindestens 2 Zeichen lang sein" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "Enthält unzulässige Zeichen" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "Muss mit a-z oder 0-9 beginnen und enden" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "Kann keine Zahl sein" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "Postfix-Domänenname konfigurieren" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "Benutzer existiert nicht" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Postfix-Dovecot SASL-Integration" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "Postfix-Alias-Maps" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "Lokale Postfix-Empfänger-Maps" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "Verfügbarkeit von RoundCube" @@ -2197,16 +2168,61 @@ msgstr "Postfix verwendet ein TLS-Zertifikat" msgid "Has a TLS certificate" msgstr "Hat ein TLS-Zertifikat" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Einen gültigen Benutzernamen eingeben." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Einen gültigen Benutzernamen eingeben." + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "Domain" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "Neuer Alias (ohne @Domäne)" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "Enthält unzulässige Zeichen" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "Muss mit a-z oder 0-9 beginnen und enden" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "Kann keine Zahl sein" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "My Aliases" +msgid "Aliases" +msgstr "Meine Aliase" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Aktiviert" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Deaktiviert" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2223,159 +2239,77 @@ msgstr "K-9 Mail" msgid "FairEmail" msgstr "FairEmail" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "Aliase verwalten" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "Sie haben keine E-Mail-Aliase." -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" -msgstr "Deaktivieren ausgewählt" +#: plinth/modules/email_server/templates/email_alias.html:24 +#, fuzzy +#| msgid "Disabled" +msgid "Disable" +msgstr "Deaktiviert" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "Aktivieren ausgewählt" +#, fuzzy +#| msgid "Enabled" +msgid "Enable" +msgstr "Aktiviert" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "Ausgewählte löschen" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "Einen neuen E-Mail-Alias erstellen" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Hinzufügen" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "Neuer Wert" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Aktualisieren" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "Es gab ein Problem mit Ihrer Anfrage. Bitte versuchen Sie es erneut." - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "Postfix TLS" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "Dovecot TLS" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "Besuche die Verwaltungsoberfläche von Rspamd" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "Service-Warnung" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "Reparieren" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "Sie haben kein Home-Verzeichnis." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "Erstellen Sie eine, um den Empfang von E-Mails zu starten." - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "Home-Verzeichnis erstellen" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "Ihr Home-Verzeichnis ist bereit, E-Mails zu empfangen." - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "Aktuelle Einstellungen beibehalten" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt verwenden" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "Common Name" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "Benutzerdefinierte Werte verwenden" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "Zertifikatspfad" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "Pfad des privaten Schlüssels" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "Systemstandard verwenden" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Startseite" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "Meine Mail" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "Meine Aliase" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Sicherheit" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "Domains" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Schnappschüsse verwalten" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "Service-Warnung" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "Reparieren" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "Interner Fehler in {0}" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "Prüfen Sie das Syslog für weitere Informationen" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" -msgstr "Aktivierte Aliase" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Ein Fehler ist bei der Konfiguration aufgetreten." -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "Deaktivierte Aliase" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Einstellung unverändert" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2386,7 +2320,7 @@ msgstr "" "Verkehr Ihrer {box_name} kontrolliert. Die Firewall aktiv und korrekt " "konfiguriert halten reduziert Sicherheitsrisiken aus dem Internet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Firewall" @@ -2422,19 +2356,6 @@ msgstr "" msgid "Service/Port" msgstr "Dienst/Port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Aktiviert" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Deaktiviert" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Erlaubt" @@ -2523,7 +2444,7 @@ msgstr "Einrichten beginnen" msgid "Setup Complete" msgstr "Installation abgeschlossen" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2542,7 +2463,7 @@ msgstr "" "Git-Befehlszeilenclient oder mit mehreren verfügbaren Grafikclients " "hochladen. Und Sie können Ihren Code mit Menschen auf der ganzen Welt teilen." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2550,15 +2471,15 @@ msgstr "" "Um weiter über Git Betrieb zu lernen, schauen Sie sich die Gitanleitung an." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Lese- und Schreibberechtigung auf Git respositories" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Einfaches Git Hosting" @@ -2995,7 +2916,7 @@ msgstr "Über Ihre FreedomBox {box_name}" msgid "{box_name} Manual" msgstr "{box_name}-Handbuch" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3007,7 +2928,7 @@ msgstr "" "Anonymität, indem es verschlüsselten Datenverkehr über ein von Freiwilligen " "betriebenes, weltweit verteiltes Netzwerk sendet." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3015,7 +2936,7 @@ msgstr "" "Mehr Informationen über I2P finden Sie auf deren Projekt-Webseite." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -3023,19 +2944,19 @@ msgstr "" "Der erste Besuch der bereitgestellten Weboberfläche leitet den " "Konfigurationsprozess ein." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "I2P-Anwendung verwalten" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Anonymisierungsnetzwerk" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2P Proxy" @@ -3081,7 +3002,7 @@ msgstr "" "einem Peer-to-Peer-Netzwerk. Laden Sie Dateien herunter, indem Sie Torrents " "hinzufügen, oder erstellen Sie einen neuen Torrent, um eine Datei zu teilen." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3091,7 +3012,7 @@ msgstr "" "einfache Markup-Sprachen, einschließlich Markdown, und gängige Blogging-" "Funktionalität wie Kommentare und RSS-Feeds." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3105,15 +3026,15 @@ msgstr "" "\"{users_url}\">Benutzerkonfiguration können diese Rechte geändert oder " "neue Benutzer angelegt werden." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki und Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Wiki-Anwendungen ansehen und bearbeiten" @@ -3192,11 +3113,11 @@ msgstr "{title} gelöscht." msgid "Could not delete {title}: {error}" msgstr "{title} konnte nicht gelöscht werden: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted ist ein Server für Gobby, den kollaborativen Text-Editor." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3207,11 +3128,11 @@ msgstr "" "Client herunterladen und installieren. Dann Gobby starten und „Mit " "Server verbinden“ auswählen und den Domainnamen Ihrer {box_name} eingeben." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby-Server" @@ -3232,7 +3153,7 @@ msgstr "" "Gobby starten, „Mit Server verbinden“ auswählen und den Domainnamen Ihrer " "FreedomBox {box_name} eingeben." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3240,11 +3161,11 @@ msgstr "" "JSXC ist ein XMPP-Webclient. Er wird meist mit einem lokalen XMPP-Server " "genutzt." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Chatclient" @@ -3253,7 +3174,7 @@ msgstr "Chatclient" msgid "JavaScript license information" msgstr "JavaScript-Lizenzinformation" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3269,7 +3190,7 @@ msgstr "" "Zertifizierungsstelle Let's Encrypt nachweist, der Inhaber einer Domain zu " "sein." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3283,15 +3204,15 @@ msgstr "" "akzeptieren Sie die Let's " "Encrypt Vetragsvereinbarungen vor der Verwendung dieses Dienstes." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Zertifikate" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "Kann nicht testen: Es sind keine Domains konfiguriert." @@ -3396,7 +3317,7 @@ msgstr "Zertifikat erfolgreich widerrufen für Domain {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3414,7 +3335,7 @@ msgstr "" "einem bestimmten Matrix Server können dank Föderation zwischen den Servern " "mit Nutzerkonten auf einem beliebigen anderen Server kommunizieren." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3424,7 +3345,7 @@ msgstr "" "Installiere die Coturn-App oder konfiguriere " "einen externen Server." -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3522,7 +3443,7 @@ msgstr "" "Zertifikat. Bitte gehen Sie zu Let's " "Encrypt, um eines zu beziehen." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3535,7 +3456,7 @@ msgstr "" "nutzen, um eine Wiki-Webseite anzubieten, um Notizen zu schreiben oder um " "mit Freunden an einem Projekt zusammen zu arbeiten." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3550,7 +3471,7 @@ msgstr "" "Seite Spezial: Konto-" "Erstellen nutzen." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3558,12 +3479,12 @@ msgstr "" "Alle mit einem Link zu diesem Wiki können es lesen. Ausschließlich " "angemeldete Nutzer können den Inhalt verändern." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3656,7 +3577,7 @@ msgstr "Standard-Thema geändert" msgid "Server URL updated" msgstr "Server-URL aktualisiert" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3669,11 +3590,11 @@ msgstr "" "Standardport (30000). Um auf dem Server zu spielen, wird ein Minetest-Client benötigt." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Block-Sandkasten" @@ -3747,7 +3668,7 @@ msgstr "Spieler-gegen-Spieler-Konfiguration aktualisiert" msgid "Damage configuration updated" msgstr "Schaden-Konfiguration aktualisiert" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3765,15 +3686,15 @@ msgstr "" "Smartphones, Fernseher und Gaming-Systeme (wie PS3 und Xbox 360) oder " "Anwendungen wie Totem und Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Medien-Streaming-Server" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Einfacher Medienserver" @@ -3819,7 +3740,7 @@ msgstr "Das angegebene Verzeichnis ist nicht vorhanden." msgid "Updated media directory" msgstr "Aktualisiertes Medienverzeichnis" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3829,7 +3750,7 @@ msgstr "" "auszutauschen. Es kann in mehreren Peer-to-Peer-Netzwerken teilnehmen, unter " "anderem eDonkey, Kademlia, Overnet, BitTorrent und DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3840,7 +3761,7 @@ msgstr "" "der separaten mobilen oder Desktop-Frontends oder eine Telnet-Schnittstelle " "steuern. Siehe Handbuch." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3848,16 +3769,16 @@ msgstr "" "Auf {box_name} können heruntergeladene Dateien im Verzeichnis /var/lib/" "mldonkey/ gefunden werden." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Dateien mit eDonkey herunterladen" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-Peer-Datenaustausch" @@ -3869,7 +3790,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3890,7 +3811,7 @@ msgstr "" "die Monkeysphere-SSH-Dokumentation für weitere Details." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3909,7 +3830,7 @@ msgstr "" "monkeysphere.info/download/\">Monkeysphere-Webseite zur Verfügung steht, " "installieren." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4034,7 +3955,7 @@ msgstr "Veröffentlichte Schlüssel auf dem Server." msgid "Error occurred while publishing key." msgstr "Fehler beim Veröffentlichen des Schlüssels." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4042,7 +3963,7 @@ msgstr "" "Mumble ist eine hochwertige quelloffene Software für Telefonie und Chat, mit " "Verschlüsselung und geringer Latenz." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4052,11 +3973,11 @@ msgstr "" "verbinden. Auf Mumble finden Sie " "Anwendungen, um sich vom Desktop oder Android-Gerät mit Mumble zu verbinden." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Sprachkonferenz" @@ -4114,7 +4035,7 @@ msgstr "Alle Webanwendungen" msgid "Services" msgstr "Dienste" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4123,7 +4044,7 @@ msgstr "" "eine Verbindung zum Internet her. Teilen Sie diese Verbindung mit anderen " "Geräten im Netzwerk." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4131,11 +4052,11 @@ msgstr "" "Geräte die mit anderen Methoden verwaltet werden, können hier möglicherweise " "nicht konfiguriert werden." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Netzwerke" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC wird auf IPv{kind} verwendet" @@ -4711,6 +4632,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Diese Verbindung ist nicht aktiv." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Sicherheit" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5202,7 +5128,7 @@ msgstr "generisch" msgid "TUN or TAP interface" msgstr "TUN- bzw. TAP-Schnittstelle" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5293,7 +5219,7 @@ msgstr "Verbindung {name} gelöscht." msgid "Failed to delete connection: Connection not found." msgstr "Konnte Verbindung nicht löschen: Verbindung nicht gefunden." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5310,20 +5236,20 @@ msgstr "" "{box_name} erlangen. Sie können auch auf das Internet via {box_name} für " "zusätzliche Sicherheit und Anonymität zugreifen." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Mit VPN-Diensten verbinden" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Virtuelles Privates Netzwerk" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5407,7 +5333,7 @@ msgstr "" msgid "Download my profile" msgstr "Mein Profil herunterladen" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5420,19 +5346,19 @@ msgstr "" "die Dienste Ihrer {box_name} vom Internet nicht erreichbar sind. Dies " "umfasst folgende Situationen:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} ist hinter einer eingeschränkten Firewall." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} ist mit einem (wireless)-Router verbunden, den Sie nicht " "kontrollieren." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5440,7 +5366,7 @@ msgstr "" "Ihr ISP bietet Ihnen keine externe IP-Adresse, sondern statt dessen eine " "Internetverbindung über NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5448,11 +5374,11 @@ msgstr "" "Ihr ISP bietet keine statische IP-Adresse und Ihre IP-Adresse ändert sich " "immer, wenn Sie sich mit dem Internet verbinden." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Ihr ISP schränkt eingehende Verbindungen ein." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5466,15 +5392,15 @@ msgstr "" "\"https://pagekite.net\">pagekite.net. In der Zukunft könnte es möglich " "sein, hierfür die {box_name} eines Freundes zu nutzen." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Öffentliche Sichtbarkeit" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "PageKite Domäne" @@ -5620,12 +5546,12 @@ msgstr "" "Siehe SSH-Client Konfigurationsanweisungen" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Leistung" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5636,7 +5562,7 @@ msgstr "" "Nutzungsmuster und darüber geben, ob die Hardware von Benutzern und Diensten " "überlastet ist." -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5644,7 +5570,7 @@ msgstr "" "Leistungskennzahlen werden von Performance Co-Pilot erfasst und können in " "der Cockpit-App angezeigt werden." -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Systemüberwachung" @@ -5716,7 +5642,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Jetzt herunterfahren" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5727,7 +5653,7 @@ msgstr "" "kontrolliert den Zugang und entfernt Werbung und anderen abscheulichen " "Internet-Müll. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5742,20 +5668,20 @@ msgstr "" "unter http://config.privoxy.org/ " "oder http://p.p einsehen." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Zugang auf {url} über Proxy {proxy} auf TCP{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5773,7 +5699,7 @@ msgstr "" "mobilen App können verwendet werden, um sich mit ihm zu verbinden und oder " "zu trennen." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your Desktop und mobile Telefone zur Verfügung." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC-Client" @@ -5797,7 +5723,7 @@ msgstr "IRC-Client" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5812,7 +5738,7 @@ msgstr "" "supported-clients\">unterstützte Client Software notwendig. Radicale " "kann von jedem Benutzer mit einem {box_name}-Konto verwendet werden." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5823,12 +5749,12 @@ msgstr "" "Kontaktdaten wird nicht unterstützt; dies muss über einen separaten Client " "erfolgen." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Kalender und Adressbuch" @@ -5910,7 +5836,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration der Zugangsrechte aktualisiert" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5923,7 +5849,7 @@ msgstr "" "wie zum Beispiel MIME-Unterstützung, Adressbuch, Ordnerverwaltung, Suche in " "den Nachrichten und Rechtschreibprüfung." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5937,7 +5863,7 @@ msgstr "" "code>. Bei IMAP über SSL (empfohlen) füllen Sie das Server-Feld aus, z. B. " "imaps://imap.beispiel.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5954,11 +5880,11 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "E-Mail-Client" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5966,7 +5892,7 @@ msgstr "" "Samba ermöglicht das Teilen von Dateien und Ordnern zwischen der FreedomBox " "und anderen Rechnern im lokalen Netzwerk." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5980,11 +5906,11 @@ msgstr "" "Windows) oder smb://{hostname}.local (unter Linux und Mac) zugegriffen " "werden. Es gibt drei Arten von Shares, aus denen Sie wählen können: " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Offene Freigabe - für alle in Ihrem lokalen Netzwerk zugänglich." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5992,7 +5918,7 @@ msgstr "" "Gruppenfreigabe - nur für FreedomBox-Benutzer zugänglich, die sich in der " "Freedombox-Freigabegruppe befinden." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -6000,15 +5926,15 @@ msgstr "" "Home Share - jeder Benutzer in der freedombox-share-Gruppe kann seinen " "eigenen privaten Raum haben." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Zugriff auf die privaten Freigaben" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Netzwerkdateispeicherung" @@ -6126,7 +6052,7 @@ msgstr "Freigabe deaktiviert." msgid "Error disabling share: {error_message}" msgstr "Fehler beim Deaktivieren der Freigabe: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6134,7 +6060,7 @@ msgstr "" "Searx ist eine Internet-Metasuchmaschine, die die Privatsphäre respektiert. " "Sie sammelt und zeigt Ergebnisse von mehreren Suchmaschinen an." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6142,15 +6068,15 @@ msgstr "" "Searx kann verwendet werden, um Nachverfolgung und Profiling durch " "Suchmaschinen zu vermeiden. Standardmäßig werden keine Cookies gespeichert." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Suche im Web" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Websuche" @@ -6334,11 +6260,11 @@ msgstr "Fehler beim Setzen des eingeschränkten Zugriffs: {exception}" msgid "Updated security configuration" msgstr "Sicherheitskonfiguration aktualisiert" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli ermöglicht das Speichern und Teilen von Lesezeichen." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6346,15 +6272,15 @@ msgstr "" "Beachten Sie, dass Shaarli nur ein einziges Benutzerkonto unterstützt, das " "Sie bei Ihrem ersten Besuch einrichten müssen." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Lesezeichen" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6364,7 +6290,7 @@ msgstr "" "Internetverkehr zu schützen. Er kann verwendet werden, um Internetfilterung " "und -zensur zu umgehen." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6377,7 +6303,7 @@ msgstr "" "betrieben. Lokale Geräte können sich mit diesem Proxy verbinden, und deren " "Daten werden verschlüsselt über den Shadowsocks-Server weitergeleitet." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6386,11 +6312,11 @@ msgstr "" "SOCKS5-Proxy in ihrem Gerät, Browser, oder Anwendung auf http://" "Freedombox_Adresse:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Socks5-Proxy" @@ -6532,7 +6458,7 @@ msgstr "Freigabe bearbeiten" msgid "Share deleted." msgstr "Freigabe gelöscht." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6543,7 +6469,7 @@ msgstr "" "unerwünschte Änderungen in einen vorherigen bekannten guten Zustand zurück " "zu versetzen." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6555,7 +6481,7 @@ msgstr "" "Software. Ältere Schnappschüsse werden gemäß den Einstellungen unten " "automatisch bereinigt." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for Datensicherungen, da sie nur auf derselben " "Partition gespeichert werden können. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Speicherauszüge" @@ -6774,7 +6700,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "Zurücksetzen auf Speicherauszug" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6786,7 +6712,7 @@ msgstr "" "verifizierter, entfernter Computer Verwaltungsaufgaben ausführen, Dateien " "kopieren oder andere Anwendungen starten." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -6833,7 +6759,7 @@ msgstr "SSH-Authentifizierung mit Passwort deaktiviert." msgid "SSH authentication with password enabled." msgstr "SSH-Authentifizierung mit Passwort aktiviert." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Einmal-Anmeldung" @@ -6841,7 +6767,7 @@ msgstr "Einmal-Anmeldung" msgid "Login" msgstr "Anmelden" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6853,109 +6779,109 @@ msgstr "" "Speichermedien einsehen, Wechselmedien einbinden und aushängen, die Root-" "Partition erweitern usw." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Speicher" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} Bytes" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Der Vorgang schlug fehl." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Der Vorgang wurde abgebrochen." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Das Gerät wird bereits ausgehängt." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Der Vorgang ist wegen fehlender Treiber-/Werkzeugunterstützung nicht möglich." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Der Vorgang beendet wegen Zeitüberschreitung." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "Dieser Vorgang würde ein Gerät aufwecken, welches sich in einem Tiefschlaf-" "Zustand befindet." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Es wird versucht, ein Gerät auszuhängen, das beschäftigt ist." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Dieser Vorgang wurde bereits abgebrochen." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Nicht autorisiert, um den gewünschten Vorgang auszuführen." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Dieses Gerät ist bereits eingebunden." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Das Gerät ist nicht eingebunden." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Die gewünschte Option ist nicht gestattet." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Das Gerät ist von einem anderen Benutzer eingebunden." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Geringer Speicherplatz auf der Systempartition: {percent_used}% belegt, " "{free_space} verfügbar." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Wenig Plattenspeicherplatz" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Festplattenfehler unmittelbar bevorstehend" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7082,7 +7008,7 @@ msgstr "Gerät kann sicher entfernt werden." msgid "Error ejecting device: {error_message}" msgstr "Fehler beim Auswerfen des Geräts: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7094,7 +7020,7 @@ msgstr "" "Modifikation oder Löschen von Dateien auf einem Gerät wird automatisch auf " "allen anderen Geräten reproduziert, auf denen Syncthing läuft." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7114,20 +7040,20 @@ msgstr "" "{box_name} ist nur für Benutzer der \"Admin\" oder \"Syncthing-access\"-" "Gruppe zugänglich." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Syncthing-Anwendung einstellen" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Dateisynchronisation" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7140,7 +7066,7 @@ msgstr "" "Knoten ausfallen, können Ihre Dateien von den restlichen Knoten " "wiederhergestellt werden." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7151,11 +7077,11 @@ msgstr "" "LAFS \"Introducer\". Sie können zusätzliche Introducer einstellen, welche " "diesen Speicherknoten bei weiteren Speicherknoten anmelden können." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Verteilter Dateispeicher" @@ -7195,7 +7121,7 @@ msgstr "Verbundene Vermittler" msgid "Remove" msgstr "Entfernen" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7209,40 +7135,40 @@ msgstr "" "Sie den Tor Browser verwenden." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Tor-Onion-Dienste" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor-Socks-Proxy" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Tor-Bridge-Relay" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Tor-Relay-Port ist verfügbar" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3-Transport registriert" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4-Transport registriert" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Zugangs-URL {url} auf TCP{kind} über Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Tor-Nutzung auf {url} über TCP{kind} bestätigen" @@ -7396,15 +7322,11 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS-Port ist auf Ihrer %(box_name)s auf TCP port 9050 verfügbar." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Einstellung unverändert" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission ist ein BitTorrent-Client mit einer Weboberfläche." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7412,16 +7334,16 @@ msgstr "" "BitTorrent ist ein Peer-to-Peer Protokoll zum Teilen von Dateien. Es gilt zu " "beachten: BitTorrent ist nicht anonym." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "Bitte ändern Sie den Standardport des Transmission Daemons nicht." -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7430,7 +7352,7 @@ msgstr "" "Tiny Tiny RSS ist ein Feedreader (RSS/Atom), der von jedem Browser aus " "genutzt werden kann, sich aber sehr wie eine normale Anwendung anfühlt." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any Benutzer mit einem {box_name} Login aufgerufen werden." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7448,15 +7370,15 @@ msgstr "" "verwenden Sie die URL /tt-rss-app für die " "Verbindung." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Lesen und Abonnieren von Neuigkeiten-Feeds" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Feedreader" @@ -7464,14 +7386,14 @@ msgstr "Feedreader" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Suchen Sie nach den neuesten Software- und Sicherheitsupdates und " "installieren Sie diese." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7485,19 +7407,26 @@ msgstr "" "erachtet wird, erfolgt dieser automatisch um 02:00 Uhr, so dass alle " "Anwendungen kurzzeitig nicht verfügbar sind." -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Aktualisieren" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Aktualisierungen" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox aktualisiert" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "Distributions-Update konnte nicht gestartet werden" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " @@ -7508,11 +7437,11 @@ msgstr "" "mindestens 5 GB frei sind. Das Distributions-Update wird nach 24 Stunden " "erneut versucht, falls aktiviert." -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "Distributions-Upgrade gestartet" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7708,7 +7637,7 @@ msgstr "Starten der Aktualisierung fehlgeschlagen." msgid "Frequent feature updates activated." msgstr "Häufige Funktions-Updates aktiviert." -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7719,7 +7648,7 @@ msgstr "" "muss ein Benutzerkonto Teil einer Gruppe sein, damit ein Benutzer auf die " "App zugreifen kann." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7731,15 +7660,15 @@ msgstr "" "dürfen nur Mitglieder der Gruppe admin Apps oder " "Systemeinstellungen ändern." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Benutzer und Gruppen" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Zugriff auf alle Anwendungen und Systemeinstellungen" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP-Eintrag „{search_item}“ prüfen" @@ -7992,11 +7921,11 @@ msgstr "Passwort ändern" msgid "Password changed successfully." msgstr "Passwort erfolgreich geändert." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard ist ein schneller, moderner, sicherer VPN-Tunnel." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -8006,7 +7935,7 @@ msgstr "" "herzustellen, der WireGuard unterstützt, und um den gesamten ausgehenden " "Datenverkehr von {box_name} über das VPN weiterzuleiten." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8333,7 +8262,7 @@ msgstr "Verbindung zum Server löschen" msgid "Server deleted." msgstr "Server gelöscht." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8348,7 +8277,7 @@ msgstr "" "Verwaltungsoberfläche und die erstellten Webseiten sind für mobile Geräte " "geeignet." -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8362,7 +8291,7 @@ msgstr "" "zugreifen. Aktivieren Sie Permalinks in der Administratoroberfläche, um " "bessere URLs für Ihre Seiten und Beiträge zu erhalten." -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " @@ -8373,7 +8302,7 @@ msgstr "" "wordpress/wp-admin/\">Administrationsseite, um die " "Administrationsoberfläche in Zukunft zu erreichen." -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " @@ -8384,12 +8313,12 @@ msgstr "" "Plugins oder Themes können auf Ihr eigenes Risiko installiert und " "aktualisiert werden." -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "Internetseite und Blog" @@ -8406,7 +8335,7 @@ msgstr "" "Administratoren die WordPress-Website oder den Blog aufrufen. Aktivieren Sie " "diese Option erst nach der Ersteinrichtung von WordPress." -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8431,7 +8360,7 @@ msgstr "" "Einzelne Fotos können mit anderen geteilt werden, indem ein direkter Link " "gesendet wird." -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8442,11 +8371,11 @@ msgstr "" "Administrator in Zoph. Für zusätzliche Benutzer müssen Konten sowohl in " "{box_name} als auch in Zoph mit demselben Benutzernamen erstellt werden." -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Foto-Manager" @@ -8485,23 +8414,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Allgemein" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Fehler bei der Installation" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "Installation läuft" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "herunterladen" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "Medienwechsel" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "Konfigurationsdatei: {file}" @@ -8573,6 +8502,10 @@ msgstr "Kernfunktionalität und Weboberfläche für %(box_name)s" msgid " Home" msgstr " Startseite" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Startseite" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Apps" @@ -8875,6 +8808,85 @@ msgstr "%(percentage)s %% abgeschlossen" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "The alias was taken" +#~ msgstr "Der Alias wurde übernommen" + +#~ msgid "Must be at least 2 characters long" +#~ msgstr "Muss mindestens 2 Zeichen lang sein" + +#~ msgid "User does not exist" +#~ msgstr "Benutzer existiert nicht" + +#~ msgid "Postfix local recipient maps" +#~ msgstr "Lokale Postfix-Empfänger-Maps" + +#~ msgid "Disable selected" +#~ msgstr "Deaktivieren ausgewählt" + +#~ msgid "Enable selected" +#~ msgstr "Aktivieren ausgewählt" + +#~ msgid "Delete selected" +#~ msgstr "Ausgewählte löschen" + +#~ msgid "New value" +#~ msgstr "Neuer Wert" + +#~ msgid "There was a problem with your request. Please try again." +#~ msgstr "" +#~ "Es gab ein Problem mit Ihrer Anfrage. Bitte versuchen Sie es erneut." + +#~ msgid "Postfix TLS" +#~ msgstr "Postfix TLS" + +#~ msgid "Dovecot TLS" +#~ msgstr "Dovecot TLS" + +#~ msgid "Visit Rspamd administration interface" +#~ msgstr "Besuche die Verwaltungsoberfläche von Rspamd" + +#~ msgid "You do not have a home directory." +#~ msgstr "Sie haben kein Home-Verzeichnis." + +#~ msgid "Create one to begin receiving emails." +#~ msgstr "Erstellen Sie eine, um den Empfang von E-Mails zu starten." + +#~ msgid "Create home directory" +#~ msgstr "Home-Verzeichnis erstellen" + +#~ msgid "Your home directory is ready to receive emails." +#~ msgstr "Ihr Home-Verzeichnis ist bereit, E-Mails zu empfangen." + +#~ msgid "Keep current settings" +#~ msgstr "Aktuelle Einstellungen beibehalten" + +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt verwenden" + +#~ msgid "Common name" +#~ msgstr "Common Name" + +#~ msgid "Use custom values" +#~ msgstr "Benutzerdefinierte Werte verwenden" + +#~ msgid "Certificate path" +#~ msgstr "Zertifikatspfad" + +#~ msgid "Private key path" +#~ msgstr "Pfad des privaten Schlüssels" + +#~ msgid "Use system default" +#~ msgstr "Systemstandard verwenden" + +#~ msgid "My Mail" +#~ msgstr "Meine Mail" + +#~ msgid "Enabled aliases" +#~ msgstr "Aktivierte Aliase" + +#~ msgid "Disabled aliases" +#~ msgstr "Deaktivierte Aliase" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Der einzige Administrator des Systems kann nicht gelöscht werden." diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index 7af15b33b..a3aaa7c02 100644 --- a/plinth/locale/django.pot +++ b/plinth/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,7 +21,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:83 +#: plinth/context_processors.py:23 plinth/views.py:81 msgid "FreedomBox" msgstr "" @@ -86,17 +86,17 @@ msgstr "" msgid "Error installing application: {error}" msgstr "" -#: plinth/modules/apache/__init__.py:41 +#: plinth/modules/apache/__init__.py:42 msgid "Apache HTTP Server" msgstr "" -#: plinth/modules/apache/__init__.py:44 +#: plinth/modules/apache/__init__.py:48 #: plinth/modules/monkeysphere/templates/monkeysphere.html:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:46 msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:50 +#: plinth/modules/apache/__init__.py:54 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -111,7 +111,7 @@ msgstr "" msgid "Access URL {url}" msgstr "" -#: plinth/modules/avahi/__init__.py:35 +#: plinth/modules/avahi/__init__.py:36 #, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " @@ -122,48 +122,48 @@ msgid "" "network." msgstr "" -#: plinth/modules/avahi/__init__.py:59 +#: plinth/modules/avahi/__init__.py:60 msgid "Service Discovery" msgstr "" -#: plinth/modules/avahi/__init__.py:69 +#: plinth/modules/avahi/__init__.py:73 msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:34 +#: plinth/modules/backups/__init__.py:35 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:54 plinth/modules/backups/__init__.py:200 -#: plinth/modules/backups/__init__.py:245 +#: plinth/modules/backups/__init__.py:56 plinth/modules/backups/__init__.py:205 +#: plinth/modules/backups/__init__.py:250 msgid "Backups" msgstr "" -#: plinth/modules/backups/__init__.py:197 +#: plinth/modules/backups/__init__.py:202 msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." msgstr "" -#: plinth/modules/backups/__init__.py:203 +#: plinth/modules/backups/__init__.py:208 msgid "Enable a Backup Schedule" msgstr "" -#: plinth/modules/backups/__init__.py:207 -#: plinth/modules/backups/__init__.py:254 -#: plinth/modules/storage/__init__.py:323 +#: plinth/modules/backups/__init__.py:212 +#: plinth/modules/backups/__init__.py:259 +#: plinth/modules/storage/__init__.py:328 #, python-brace-format msgid "Go to {app_name}" msgstr "" -#: plinth/modules/backups/__init__.py:242 +#: plinth/modules/backups/__init__.py:247 #, python-brace-format msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" -#: plinth/modules/backups/__init__.py:250 +#: plinth/modules/backups/__init__.py:255 msgid "Error During Backup" msgstr "" @@ -680,7 +680,7 @@ msgstr "" msgid "Mounting failed" msgstr "" -#: plinth/modules/bepasty/__init__.py:24 +#: plinth/modules/bepasty/__init__.py:25 msgid "" "bepasty is a web application that allows large files to be uploaded and " "shared. Text and code snippets can also be pasted and shared. Text, image, " @@ -688,7 +688,7 @@ msgid "" "can be set to expire after a time period." msgstr "" -#: plinth/modules/bepasty/__init__.py:28 +#: plinth/modules/bepasty/__init__.py:29 msgid "" "bepasty does not use usernames for login. It only uses passwords. For each " "password, a set of permissions can be selected. Once you have created a " @@ -696,7 +696,7 @@ msgid "" "permissions." msgstr "" -#: plinth/modules/bepasty/__init__.py:32 +#: plinth/modules/bepasty/__init__.py:33 msgid "" "You can also create multiple passwords with the same set of privileges, and " "distribute them to different people or groups. This will allow you to later " @@ -704,39 +704,39 @@ msgid "" "the list." msgstr "" -#: plinth/modules/bepasty/__init__.py:41 plinth/modules/bepasty/__init__.py:50 +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 msgid "Read a file, if a web link to the file is available" msgstr "" -#: plinth/modules/bepasty/__init__.py:42 +#: plinth/modules/bepasty/__init__.py:43 msgid "Create or upload files" msgstr "" -#: plinth/modules/bepasty/__init__.py:43 +#: plinth/modules/bepasty/__init__.py:44 msgid "List all files and their web links" msgstr "" -#: plinth/modules/bepasty/__init__.py:44 +#: plinth/modules/bepasty/__init__.py:45 msgid "Delete files" msgstr "" -#: plinth/modules/bepasty/__init__.py:45 +#: plinth/modules/bepasty/__init__.py:46 msgid "Administer files: lock/unlock files" msgstr "" -#: plinth/modules/bepasty/__init__.py:49 +#: plinth/modules/bepasty/__init__.py:50 msgid "None, password is always required" msgstr "" -#: plinth/modules/bepasty/__init__.py:51 +#: plinth/modules/bepasty/__init__.py:52 msgid "List and read all files" msgstr "" -#: plinth/modules/bepasty/__init__.py:64 plinth/modules/bepasty/manifest.py:6 +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:6 msgid "bepasty" msgstr "" -#: plinth/modules/bepasty/__init__.py:66 +#: plinth/modules/bepasty/__init__.py:67 msgid "File & Snippet Sharing" msgstr "" @@ -812,6 +812,7 @@ msgid "List" msgstr "" #: plinth/modules/bepasty/views.py:52 +#: plinth/modules/email_server/templates/email_alias.html:28 #: plinth/modules/letsencrypt/templates/letsencrypt.html:86 #: plinth/modules/networks/templates/connection_show.html:56 #: plinth/modules/samba/templates/samba.html:154 @@ -850,13 +851,13 @@ msgstr "" msgid "Password deleted." msgstr "" -#: plinth/modules/bind/__init__.py:30 +#: plinth/modules/bind/__init__.py:31 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." msgstr "" -#: plinth/modules/bind/__init__.py:34 +#: plinth/modules/bind/__init__.py:35 #, python-brace-format msgid "" "Currently, on {box_name}, BIND is only used to resolve DNS queries for other " @@ -864,11 +865,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:78 +#: plinth/modules/bind/__init__.py:80 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:79 +#: plinth/modules/bind/__init__.py:81 msgid "Domain Name Server" msgstr "" @@ -921,7 +922,7 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:214 #: plinth/modules/matrixsynapse/views.py:124 plinth/modules/mumble/views.py:28 #: plinth/modules/pagekite/forms.py:78 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 @@ -929,7 +930,7 @@ msgstr "" msgid "Configuration updated" msgstr "" -#: plinth/modules/calibre/__init__.py:31 +#: plinth/modules/calibre/__init__.py:32 #, python-brace-format msgid "" "calibre server provides online access to your e-book collection. You can " @@ -937,7 +938,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/calibre/__init__.py:34 +#: plinth/modules/calibre/__init__.py:35 msgid "" "You can organize your e-books, extract and edit their metadata, and perform " "advanced search. calibre can import, export, or convert across a wide range " @@ -946,21 +947,21 @@ msgid "" "highlighted text. Content distribution using OPDS is currently not supported." msgstr "" -#: plinth/modules/calibre/__init__.py:40 +#: plinth/modules/calibre/__init__.py:41 msgid "" "Only users belonging to calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1032,7 +1033,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1041,7 +1042,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1049,25 +1050,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1212,7 +1213,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1220,7 +1221,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1864,48 +1865,18 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1930,16 +1901,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1956,159 +1966,69 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2116,7 +2036,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2148,19 +2068,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2236,7 +2143,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2247,21 +2154,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2622,7 +2529,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2630,31 +2537,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2691,14 +2598,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2707,15 +2614,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2792,11 +2699,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2804,11 +2711,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2827,17 +2734,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2846,7 +2753,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2856,7 +2763,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2864,15 +2771,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2973,7 +2880,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2983,14 +2890,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3061,7 +2968,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3069,7 +2976,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3078,18 +2985,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3171,7 +3078,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3180,11 +3087,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3250,7 +3157,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3261,15 +3168,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3309,36 +3216,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3350,7 +3257,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3362,7 +3269,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3373,7 +3280,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3495,24 +3402,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3563,23 +3470,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4059,6 +3966,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4496,7 +4408,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4585,7 +4497,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4596,20 +4508,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4673,7 +4585,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4682,33 +4594,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4717,15 +4629,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4859,25 +4771,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4938,14 +4850,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4955,20 +4867,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4979,7 +4891,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -4999,7 +4911,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5009,19 +4921,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5088,7 +5000,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5096,7 +5008,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5105,7 +5017,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5115,17 +5027,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5134,31 +5046,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5266,27 +5178,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5441,32 +5353,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5475,17 +5387,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5614,14 +5526,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5629,14 +5541,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5826,7 +5738,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5834,7 +5746,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5875,7 +5787,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5883,7 +5795,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5891,104 +5803,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6102,7 +6014,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6110,7 +6022,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6122,20 +6034,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6143,7 +6055,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6151,11 +6063,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6190,7 +6102,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6199,40 +6111,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6358,58 +6270,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6417,12 +6325,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6430,30 +6338,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6619,14 +6534,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6634,15 +6549,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6868,18 +6783,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7173,7 +7088,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7182,7 +7097,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7191,26 +7106,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7224,7 +7139,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7237,7 +7152,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7245,11 +7160,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7283,23 +7198,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7360,6 +7275,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 694f5ddf1..e954285be 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-04-14 04:27+0000\n" "Last-Translator: Michalis \n" "Language-Team: Greek calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1163,7 +1164,7 @@ msgstr "το {name} διαγράφηκε." msgid "Could not delete {name}: {error}" msgstr "Δεν ήταν δυνατή η διαγραφή του {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1177,7 +1178,7 @@ msgstr "" "λειτουργίες οι οποίες συνήθως δεν θέλουν αλλαγές. Επιπλέον το Cockpit " "παρέχει λειτουργίες κονσόλας σε ένα τερματικό στο πρόγραμμα περιήγησης ιστού." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1185,7 +1186,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1194,7 +1195,7 @@ msgstr "" "To πρόγραμμα είναι προσβάσιμο στο URL από " "οποιοσδήποτε χρήστης στο {box_name} που ανήκει στην ομάδα διαχειριστών." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1203,12 +1204,12 @@ msgstr "" "λειτουργήσει όταν αποκτάτε πρόσβαση χρησιμοποιώντας μια διεύθυνση IP ως " "μέρος της διεύθυνσης URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Διαχείριση διακομιστή" @@ -1379,7 +1380,7 @@ msgstr "Εμφανίζονται προηγμένες εφαρμογές και msgid "Hiding advanced apps and features" msgstr "Απόκρυψη προηγμένων εφαρμογών και χαρακτηριστικών" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1387,7 +1388,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web clientπιστοποιητικά για το {box_name}." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Διακομιστής συνομιλίας" @@ -2146,52 +2147,20 @@ msgstr "Διακομιστής συνομιλίας" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Σφάλμα κατά τη ρύθμιση ονόματος διδαδικτύου: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -#, fuzzy -#| msgid "Directory does not exist." -msgid "User does not exist" -msgstr "Ο κατάλογος δεν υπάρχει." - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Unavailable Shares" @@ -2220,18 +2189,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Δεν υπάρχει πιστοποιητικό" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "Μη έγκυρο όνομα διακομιστή" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "Μη έγκυρο όνομα διακομιστή" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Όνομα διαδικτύου" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Repositories" +msgid "Aliases" +msgstr "Διαχείριση αποθετηρίων" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Ενεργοποιήθηκε" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Απενεργοποιήθηκε" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2250,187 +2264,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Repositories" msgid "Manage Aliases" msgstr "Διαχείριση αποθετηρίων" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Απενεργοποιήθηκε" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "το καλώδιο είναι συνδεδεμένο" +#| msgid "Enabled" +msgid "Enable" +msgstr "Ενεργοποιήθηκε" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Deleted selected snapshots" -msgid "Delete selected" -msgstr "Διαγράφηκαν επιλεγμένα στιγμιότυπα" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Δημιουργία νέου αντιγράφου ασφαλείας" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Προσθήκη" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Ονόματα διαδικτύου" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Ενημερωμένη έκδοση" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Διαχείριση στιγμιότυπων" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Τύπος υπηρεσίας" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Path is not a directory." -msgid "You do not have a home directory." -msgstr "Το μονοπάτι δεν είναι κατάλογος." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Updated media directory" -msgid "Create home directory" -msgstr "O κατάλογος πολυμέσων ενημερώθηκε" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "To όνομα διαδικτύου ρυθμίστηκε επιτυχώς" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Κατάσταση πιστοποιητικού" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Private repository" -msgid "Private key path" -msgstr "Ιδιωτικό αποθετήριο" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Κεντρική σελίδα" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Ασφάλεια" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Ονόματα διαδικτύου" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Ενεργοποίηση ζημιών" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση παραμέτρων." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Απενεργοποιήθηκε" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Οι ρυθμίσεις δεν άλλαξαν" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2442,7 +2352,7 @@ msgstr "" "προστασίας ενεργοποιημένο και η σωστή ρύθμιση παραμέτρων μειώνει τον κίνδυνο " "απειλών προερχόμενων από το Internet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Firewall (τείχος προστασίας)" @@ -2480,19 +2390,6 @@ msgstr "" msgid "Service/Port" msgstr "Υπηρεσία/θύρα" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Ενεργοποιήθηκε" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Απενεργοποιήθηκε" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Επιτρέπεται" @@ -2576,7 +2473,7 @@ msgstr "Έναρξη εγκατάστασης" msgid "Setup Complete" msgstr "Η εγκατάσταση ολοκληρώθηκε" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2595,7 +2492,7 @@ msgstr "" "πολλαπλές διαθέσιμες γραφικές εφαρμογές-πελάτες. Και μπορείτε να μοιραστείτε " "τον κώδικά σας με τους ανθρώπους σε όλο τον κόσμο." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2603,15 +2500,15 @@ msgstr "" "Για να μάθετε περισσότερα για το git μάθημα git." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Πρόσβαση ανάγνωσης και εγγραφής σε αποθετήρια Git" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Απλό Hosting Git" @@ -3072,7 +2969,7 @@ msgstr "Σχετικά με το {box_name}" msgid "{box_name} Manual" msgstr "Εγχειρίδιο για το {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3084,7 +2981,7 @@ msgstr "" "παρακολούθηση. Το i2p παρέχει ανωνυμία κατά την αποστολή κρυπτογραφημένης " "κυκλοφορίας μέσα από ένα εθελοντικό δίκτυο διανεμημένο σε όλο τον κόσμο." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3092,7 +2989,7 @@ msgstr "" "Βρείτε περισσότερες πληροφορίες σχετικά με το έργο τους Ι2Ρ." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -3100,19 +2997,19 @@ msgstr "" "Η πρώτη επίσκεψη στο παρεχόμενο δικτυακό περιβάλλον θα ξεκινήσει τη " "διαδικασία ρύθμισης." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Διαχείριση εφαρμογής I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Δίκτυο ανωνυμίας" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "Διακομιστής μεσολάβησης I2P" @@ -3158,7 +3055,7 @@ msgstr "" "to-peer δίκτυο. Κατεβάστε τα αρχεία με την προσθήκη torrents ή δημιουργήστε " "ένα νέο torrent για να μοιραστείτε ένα αρχείο." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3168,7 +3065,7 @@ msgstr "" "ελαφριές γλώσσες σήμανσης, όπως Markdown και κοινές λειτουργίες ιστολογίου, " "όπως σχόλια και τροφοδοσίες RSS." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3183,15 +3080,15 @@ msgstr "" "\"{users_url}\">ρυθμίσεις μπορεί να γίνει ρύθμιση παραμέτρων χρήστη και " "να αλλάξετε τα δικαιώματα ή να προσθέσετε νέους χρήστες." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki και Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Προβολή και επεξεργασία εφαρμογών wiki" @@ -3271,13 +3168,13 @@ msgstr "{title} διαγράφηκε." msgid "Could not delete {title}: {error}" msgstr "Δεν ήταν δυνατή η διαγραφή του {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted είναι ένας διακομιστής για Γκόμπι, ένα πρόγραμμα που μπορείτε να " "συνεργαστείτε στην επεξεργασία κειμένου." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3289,11 +3186,11 @@ msgstr "" "επιλέξτε \"σύνδεση στο διακομιστή\" και πληκτρολογήστε το όνομα διαδικτύου " "σας για το {box_name}." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby Server" @@ -3314,7 +3211,7 @@ msgstr "" "Ξεκινήστε το gobby και επιλέξτε \"σύνδεση στο διακομιστή\" και " "πληκτρολογήστε το όνομα domain σας {box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3322,11 +3219,11 @@ msgstr "" "Το JSXC είναι ένα πρόγραμμα-πελάτης Web για το XMPP Συνήθως χρησιμοποιείται " "με ένα διακομιστή ΧΜPP που εκτελείται στο ίδιο δίκτυο." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Πρόγραμμα-πελάτης συνομιλίας" @@ -3335,7 +3232,7 @@ msgstr "Πρόγραμμα-πελάτης συνομιλίας" msgid "JavaScript license information" msgstr "Πληροφορίες άδειας χρήσης JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3351,7 +3248,7 @@ msgstr "" "αποδεικνύοντας ότι είναι ο ιδιοκτήτης ενός ονόματος στην υπηρεσία Let's " "Encrypt, μια αρχή έκδοσης πιστοποιητικών (CA)." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3365,15 +3262,15 @@ msgstr "" "letsencrypt.org/repository/\">Συμφωνία Συνδρομητή Lets Encrypt πριν από " "τη χρήση αυτής της υπηρεσίας." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Πιστοποιητικά" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3478,7 +3375,7 @@ msgstr "Το πιστοποιητικό διαγράφηκε επιτυχώς γ msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Αποτυχία διαγραφής πιστοποιητικού για το όνομα {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3496,14 +3393,14 @@ msgstr "" "να συνομιλήσουν με τους χρήστες σε όλες τις άλλες διακομιστές Matrix μέσω " "ομοσπονδίας." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3601,7 +3498,7 @@ msgstr "" "TLS πιστοποιητικό. Μεταβείτε στη διεύθυνση " "Lets Encrypt για να αποκτήσετε ένα." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3614,7 +3511,7 @@ msgstr "" "χρησιμοποιήσετε το wiki για να φιλοξενήσετε μια ιστοσελίδα που μοιάζει με " "wiki, να πάρετε σημειώσεις ή να συνεργαστείτε με φίλους σε έργα." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3629,7 +3526,7 @@ msgstr "" "λογαριασμούς χρηστών από το ίδιο το wiki, πηγαίνοντας στη σελίδα Δημιουργία λογαριασμού." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3637,12 +3534,12 @@ msgstr "" "Όποιος έχει μια διεύθυνση URL για αυτό το wiki μπορεί να το διαβάσει. Μόνο " "οι χρήστες που είναι συνδεδεμένοι μπορούν να κάνουν αλλαγές στο περιεχόμενο." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "Mediawiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3738,7 +3635,7 @@ msgstr "Η προεπιλεγμένη εμφάνιση άλλαξε" msgid "Server URL updated" msgstr "Το μέρισμα διαγράφηκε." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3752,11 +3649,11 @@ msgstr "" "συνδεθείτε με το διακομιστή, ένας Minetest πελάτη είναι απαραίτητος." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Μπλοκ Sandbox" @@ -3831,7 +3728,7 @@ msgstr "Η ρύθμιση PVP ενημερώθηκε" msgid "Damage configuration updated" msgstr "Η ρύθμιση ζημιών ενημερώθηκε" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3850,15 +3747,15 @@ msgstr "" "βίντεο παιχνιδιών (όπως το PS3 και το Xbox 360) ή εφαρμογές όπως το Totem " "και Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Διακομιστής ροής πολυμέσων" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Απλός διακομιστής πολυμέσων" @@ -3903,7 +3800,7 @@ msgstr "Ο καθορισμένος κατάλογος δεν υπάρχει." msgid "Updated media directory" msgstr "O κατάλογος πολυμέσων ενημερώθηκε" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3914,7 +3811,7 @@ msgstr "" "πολλαπλά ομότιμα (peer-to-peer) δίκτυα όπως το eDonkey, Kademlia, Overnet, " "BitTorrent και DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3925,7 +3822,7 @@ msgstr "" "να το ελέγξουν μέσω οποιουδήποτε ξεχωριστού κινητού ή επιτραπέζιου " "υπολογιστή ή μιας διασύνδεσης Telnet. Δείτε το εγχειρίδιο." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3933,16 +3830,16 @@ msgstr "" "Στο {box_name}, τα ληφθέντα αρχεία μπορούν να βρεθούν στον κατάλογο/var/lib/" "mldonkey/." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Λήψη αρχείων με χρήση των εφαρμογών eDonkey" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Διαμοιρασμός αρχείων σε ομότιμο δίκτυο (peer-to-peer)" @@ -3954,7 +3851,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3976,7 +3873,7 @@ msgstr "" "\"http://web.monkeysphere.info/getting-started-ssh/\">Monkeysphere έγγραφα για περισσότερες λεπτομέρειες." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3996,7 +3893,7 @@ msgstr "" "ιστότοπο Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4121,7 +4018,7 @@ msgstr "Δημοσιεύθηκε το κλειδί στο διακομιστή msgid "Error occurred while publishing key." msgstr "Παρουσιάστηκε σφάλμα κατά τη δημοσίευση του κλειδιού." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4129,7 +4026,7 @@ msgstr "" "Το mumble είναι ένα ανοικτού πηγαίου κώδικα, χαμηλής καθυστέρησης, " "κρυπτογραφημένο και υπηλής ποιότητας προγραμμα φωνητικής συνομιλίας." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4139,11 +4036,11 @@ msgstr "" "href=\"http://mumble.info\"> Πελάτες για να συνδεθείτε με το Mumble από " "τον υπολογιστή και τις συσκευές Android είναι διαθέσιμες." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Φωνητική συνομιλία" @@ -4204,7 +4101,7 @@ msgstr "Όλες οι εφαρμογές ιστού" msgid "Services" msgstr "Υπηρεσία" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4213,7 +4110,7 @@ msgstr "" "Ethernet, Wi-Fi ή PPPoE. Μοιραστείτε αυτήν τη σύνδεση με άλλες συσκευές στο " "δίκτυο." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4221,11 +4118,11 @@ msgstr "" "Οι συσκευές που διαχειρίζονται μέσω άλλων μεθόδων ενδέχεται να μην είναι " "διαθέσιμες για ρύθμιση παραμέτρων εδώ." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Δίκτυα" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Χρήση του DNSSEC σε IPv {kind}" @@ -4733,6 +4630,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Αυτή η σύνδεση δεν είναι ενεργή." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Ασφάλεια" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5229,7 +5131,7 @@ msgstr "Γενικός" msgid "TUN or TAP interface" msgstr "Ιnterface" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5328,7 +5230,7 @@ msgstr "Η σύνδεση {name} διαγράφηκε." msgid "Failed to delete connection: Connection not found." msgstr "Απέτυχε η διαγραφή της σύνδεσης: η σύνδεση δεν βρέθηκε." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5346,22 +5248,22 @@ msgstr "" "επίσης να αποκτήσετε πρόσβαση στο υπόλοιπο Internet μέσω του {box_name} για " "πρόσθετη ασφάλεια και ανωνυμία." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "Τύπος σύνδεσης" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Εικονικό ιδιωτικό δίκτυο" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5437,7 +5339,7 @@ msgstr "" msgid "Download my profile" msgstr "Λήψη του προφίλ μου" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5450,19 +5352,19 @@ msgstr "" "υπηρεσίες δεν είναι προσβάσιμες από το υπόλοιπο Internet. Αυτό περιλαμβάνει " "τις ακόλουθες καταστάσεις:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "το {box_name} βρίσκεται πίσω από ένα περιορισμένο τείχος προστασίας." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "το {box_name} είναι συνδεδεμένο σε έναν (ασύρματο) δρομολογητή, τον οποίο " "δεν ελέγχετε." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5470,7 +5372,7 @@ msgstr "" "Ο παροχέας ιντερνετ δεν σας παρέχει εξωτερική διεύθυνση IP και αντίθετα " "παρέχει σύνδεση στο Internet μέσω δικτύου NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5478,11 +5380,11 @@ msgstr "" "Ο παροχέας ιντερνετ δεν σας παρέχει μια στατική διεύθυνση IP και η διεύθυνση " "IP αλλάζει κάθε φορά που συνδέεστε στο Internet." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Ο παροχέας ιντερνετ περιορίζει τις εισερχόμενες συνδέσεις." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5496,15 +5398,15 @@ msgstr "" "παράδειγμα pagekite.net . Στο μέλλον " "μπορεί να είναι δυνατή η χρήση του {box_name} ενός φίλου σας για αυτό." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Δημόσια ορατότητα" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "Όνομα διαδικτύου Pagekite" @@ -5655,25 +5557,25 @@ msgstr "" "Δείτε το πρόγραμμα εγκατάστασης του προγράμματος-πελάτη (SSH) Οδηγίες" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -5748,7 +5650,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Τερματισμός τώρα" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5760,7 +5662,7 @@ msgstr "" "τον έλεγχο της πρόσβασης και την κατάργηση διαφημίσεων και άλλων " "ανεπιθύμητων μηνυμάτων στο Internet. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5776,22 +5678,22 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ ή http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Διακομιστής μεσολάβησης διαδικτύου" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" "Πρόσβαση στη διεύθυνση URL {url} με διακομιστή μεσολάβησης {proxy} στο TCP " "{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5809,7 +5711,7 @@ msgstr "" "πελάτες Κουάσελ από ένα υπολογιστή ή ένα κινητό μπορούν να χρησιμοποιηθούν " "για τη σύνδεση και την αποσύνδεση από αυτό." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your υπολογιστή και κινητό είναι διαθέσιμοι." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "Πελάτης IRC" @@ -5833,7 +5735,7 @@ msgstr "Πελάτης IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5853,7 +5755,7 @@ msgstr "" "clients/\">πελάτη . Το Radicale μπορεί να προσεγγιστεί από οποιονδήποτε " "χρήστη με {box_name} πιστοποιητικά." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5864,12 +5766,12 @@ msgstr "" "γεγονότων ή επαφών, το οποίο πρέπει να γίνει χρησιμοποιώντας ένα ξεχωριστό " "πελάτη." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Ημερολόγιο και βιβλίο διευθύνσεων" @@ -5956,7 +5858,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Η διαμόρφωση των δικαιωμάτων πρόσβασης ενημερώθηκε" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5970,7 +5872,7 @@ msgstr "" "βιβλίο διευθύνσεων, χειρισμός φακέλων, Αναζήτηση μηνυμάτων και ορθογραφικό " "έλεγχο." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 #, fuzzy #| msgid "" #| "You can access Roundcube from imaps://imap." "παράδειγμα.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -6012,11 +5914,11 @@ msgstr "" "settings/security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps )." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "Πρόγραμμα-πελάτης ηλεκτρονικού ταχυδρομείου" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -6024,7 +5926,7 @@ msgstr "" "Το Samba επιτρέπει την κοινή χρήση αρχείων και φακέλων μεταξύ του Freedombox " "και άλλων υπολογιστών στο τοπικό σας δίκτυο." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -6039,11 +5941,11 @@ msgstr "" "Υπάρχουν τρεις τύποι κοινόχρηστων αρχείων από τα οποία μπορείτε να " "επιλέξετε: " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Ανοιχτό μέρισμα - ορατό σε όλους τους χρήστες του τοπικού δικτύου." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -6051,7 +5953,7 @@ msgstr "" "Ομαδικό μέρισμα - ορατό μόνο σε χρήστες του Freedombox που είναι στην ομάδα " "Freedombox-share." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -6059,15 +5961,15 @@ msgstr "" "Οικιακό μέρισμα - κάθε χρήστης στην ομάδα freedombox-share μπορεί να έχει το " "δικό του προσωπικό διαμέρισμα στο δίσκο." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Πρόσβαση στα ιδιωτικά μερίσματα" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Distributed File Storage" msgid "Network File Storage" @@ -6204,7 +6106,7 @@ msgstr "Το μέρισμα απενεργοποιήθηκε." msgid "Error disabling share: {error_message}" msgstr "Σφάλμα κατά την απενεργοποίηση του μερίσματος: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6213,7 +6115,7 @@ msgstr "" "ιδιωτικότητα. Μαζεύει και εμφανίζει αποτελέσματα από πολλαπλές μηχανές " "αναζήτησης." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6222,15 +6124,15 @@ msgstr "" "δημιουργία προφίλ χρήστη από τις μηχανές αναζήτησης. Δεν αποθηκεύει cookies " "από προεπιλογή." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Αναζήτηση στο διαδίκτυο" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Διαδικτυακή αναζήτηση" @@ -6408,12 +6310,12 @@ msgstr "Σφάλμα κατά τη ρύθμιση περιορισμένης π msgid "Updated security configuration" msgstr "Ενημερώθηκαν οι ρυθμίσεις παραμέτρων ασφαλείας" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" "To Shaarli σας επιτρέπει να αποθηκεύσετε και να μοιραστείτε σελιδοδείκτες." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from αντίγραφα ασφαλείας επειδή " "μπορούν να αποθηκευτούν μόνο στο ίδιο διαμέρισμα του δίσκου. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Στιγμιότυπα συστήματος αρχείων" @@ -6870,7 +6772,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "Επαναφορά σε στιγμιότυπο" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6883,7 +6785,7 @@ msgstr "" "αντιγράψει αρχεία ή να εκτελέσει άλλες υπηρεσίες χρησιμοποιώντας αυτές τις " "συνδέσεις." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Διακομιστής SSH" @@ -6930,7 +6832,7 @@ msgstr "Έλεγχος ταυτότητας SSH με κωδικό πρόσβασ msgid "SSH authentication with password enabled." msgstr "Έλεγχος ταυτότητας SSH με κωδικό πρόσβασης ενεργοποιήθηκε." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Ενιαία είσοδος" @@ -6938,7 +6840,7 @@ msgstr "Ενιαία είσοδος" msgid "Login" msgstr "Σύνδεση" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6950,92 +6852,92 @@ msgstr "" "χρησιμοποιούνται προς το παρόν, να προσθέσετε και να αφαιρέσετε αφαιρούμενα " "μέσα, επεκτείνετε το root διαμέρισμα κλπ." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Χώρος Αποθήκευσης" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Η ενέργεια απέτυχε." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Η ενέργεια ακυρώθηκε." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Η συσκευή είναι ήδη προς αφαίρεση." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "Η ενέργεια δεν υποστηρίζεται λόγω μη υποστήριξης προγραμματος οδηγού." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Η ενέργεια απέτυχε επειδή διήρκησε πολύ χρόνο." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "Η ενέργεια θα ξυπνήσει ένα δίσκο που είναι σε μια βαθιά κατάσταση ύπνου." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Γίνεται προσπάθεια αφαίρεσης μιας συσκευής που είναι απασχολημένη." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Η ενέργια έχει ήδη ακυρωθεί." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Η συσκευή έχει ήδη προστεθεί." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Η συσκευή δεν είναι τοποθετημένη." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Η συσκευή έχει ήδη προστεθεί από άλλο χρήστη." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -7045,15 +6947,15 @@ msgstr "" "Προειδοποίηση: χαμηλός χώρος στο διαμέρισμα του συστήματος ({percent_used}% " "χρησιμοποιείται, {free_space} είναι ελεύθερος)." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7173,7 +7075,7 @@ msgstr "Η συσκευή μπορεί να αποσυνδεθεί με ασφά msgid "Error ejecting device: {error_message}" msgstr "Σφάλμα κατά την αφαίρεση της συσκευής: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7185,7 +7087,7 @@ msgstr "" "δημιουργία, η τροποποίηση ή η διαγραφή αρχείων σε μία συσκευή θα αναπαραχθεί " "αυτόματα σε όλες τις άλλες συσκευές που εκτελούν επίσης το Syncthing." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, fuzzy, python-brace-format #| msgid "" #| "Running Syncthing on {box_name} provides an extra synchronization point " @@ -7212,20 +7114,20 @@ msgstr "" "{box_name} είναι διαθέσιμη μόνο για χρήστες που ανήκουν στην ομάδα \"admin" "\" (διαχειριστών)." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Διαχειριστείτε την εφαρμογή Syncthing" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Συγχρονισμός αρχείων" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7238,7 +7140,7 @@ msgstr "" "και αν κάποιοι κόμβοι αποτυγχάνουν, τα αρχεία μπορούν να ανακτηθούν από τους " "υπόλοιπους κόμβους." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7249,11 +7151,11 @@ msgstr "" "από προεπιλογή. Πρόσθετοι \"εισαγωγείς\" μπορούν να προστεθούν, οι οποίοι θα " "διαφημίσουν αυτόν τον κόμβο στους άλλους κόμβους αποθήκευσης." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Διανεμημένος χώρος αποθήκευσης αρχείων" @@ -7293,7 +7195,7 @@ msgstr "Συνδεδεμένοι εισαγωγείς" msgid "Remove" msgstr "Αφαίρεση" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7307,40 +7209,40 @@ msgstr "" "Project συνιστά να χρησιμοποιήσετε το πρόγραμμα περιήγησης διαδικτύου Tor." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Υπηρεσία κρεμυδιού Tor" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor διακομιστής μεσολάβησης τύπου socks5" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Γέφυρα/μεσολαβητής Tor" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Θύρα μεσολαβητή Tor διαθέσιμη" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 μεταφορά καταχωρήθηκε" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 μεταφορά καταχωρήθηκε" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Πρόσβαση στη διεύθυνση URL {url} με tcp {kind} μέσω του Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Επιβεβαίωση χρήσης του Tor στο {url} στο προτόκολλο TCP {kind}" @@ -7494,17 +7396,13 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Μια θύρα Tor SOCKS είναι διαθέσιμη στη θύρα 9050 του %(box_name)s σας." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Οι ρυθμίσεις δεν άλλαξαν" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission είναι ένα πρόγραμμα-πελάτης BitTorrent που διαθέτει ένα " "περιβάλλον εργασίας χρήστη προσβάσιμο από τον περιηγητή ιστού." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7512,16 +7410,16 @@ msgstr "" "Το BitTorrent είναι ένα ομότιμο πρωτόκολλο κοινής χρήσης αρχείων. Σημειώστε " "ότι το BitTorrent δεν είναι ανώνυμο." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7531,7 +7429,7 @@ msgstr "" "σχεδιασμένος να επιτρέπει την ανάγνωση ειδήσεων από οποιαδήποτε τοποθεσία, " "ενώ δίνει την εντύπωση μιας πραγματικής εφαρμογής επιφάνειας εργασίας." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any χρήστη με {box_name} πιστοποιητικά." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -7554,15 +7452,15 @@ msgstr "" "Tiny Tiny RSS, χρησιμοποιήστε τη διεύθυνση URL /tt-rss-app για τη σύνδεση." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Διαβάστε και εγγραφείτε τροφοδοσίες ειδήσεων" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Αναγνώστης ειδήσεων" @@ -7570,13 +7468,13 @@ msgstr "Αναγνώστης ειδήσεων" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Ελέγξτε και εφαρμόστε τις πιο πρόσφατες ενημερώσεις λογισμικού και ασφαλείας." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7584,36 +7482,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Ενημερωμένη έκδοση" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update" msgid "Updates" msgstr "Ενημερωμένη έκδοση" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" msgstr "Ίδρυμα FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "Oι αυτόματες ενημερώσεις απενεργοποιήθηκαν" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7819,7 +7724,7 @@ msgstr "Η εκκίνηση της αναβάθμισης απέτυχε." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7831,7 +7736,7 @@ msgstr "" "είναι μέρος μιας ομάδας για να εξουσιοδοτήσουν το χρήστη να αποκτήσει " "πρόσβαση στην εφαρμογή." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7843,15 +7748,15 @@ msgstr "" "σελίδα. Ωστόσο, μόνο οι χρήστες της ομάδας admin μπορούν να " "τροποποιήσουν τις εφαρμογές ή τις ρυθμίσεις του συστήματος." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Χρήστες και ομάδες" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Πρόσβαση σε όλες τις υπηρεσίες και τις ρυθμίσεις συστήματος" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Ελέγξτε την καταχώρηση LDAP \"{search_item}\"" @@ -8115,18 +8020,18 @@ msgstr "Αλλαγή κωδικού πρόσβασης" msgid "Password changed successfully." msgstr "Ο κωδικός πρόσβασης άλλαξε με επιτυχία." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8484,7 +8389,7 @@ msgstr "Διαγραφή σύνδεσης" msgid "Server deleted." msgstr "Το μέρισμα διαγράφηκε." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8493,7 +8398,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8502,28 +8407,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Διεύθυνση" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8541,7 +8446,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8554,7 +8459,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8562,11 +8467,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8602,23 +8507,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Γενικός" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Σφάλμα κατά την εγκατάσταση" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "Εγκαθίσταται" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "Λήψη" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "Αλλαγή μέσου" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "αρχείο ρυθμίσεων: {file}" @@ -8701,6 +8606,10 @@ msgstr "Βασική λειτουργικότητα και σελίδα ιστο msgid " Home" msgstr " Κεντρική σελίδα" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Κεντρική σελίδα" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Εφαρμογές" @@ -9011,6 +8920,66 @@ msgstr "ολοκληρώθηκε το %(percentage)s%%" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Directory does not exist." +#~ msgid "User does not exist" +#~ msgstr "Ο κατάλογος δεν υπάρχει." + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Απενεργοποιήθηκε" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "το καλώδιο είναι συνδεδεμένο" + +#, fuzzy +#~| msgid "Deleted selected snapshots" +#~ msgid "Delete selected" +#~ msgstr "Διαγράφηκαν επιλεγμένα στιγμιότυπα" + +#, fuzzy +#~| msgid "Path is not a directory." +#~ msgid "You do not have a home directory." +#~ msgstr "Το μονοπάτι δεν είναι κατάλογος." + +#, fuzzy +#~| msgid "Updated media directory" +#~ msgid "Create home directory" +#~ msgstr "O κατάλογος πολυμέσων ενημερώθηκε" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "To όνομα διαδικτύου ρυθμίστηκε επιτυχώς" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Κατάσταση πιστοποιητικού" + +#, fuzzy +#~| msgid "Private repository" +#~ msgid "Private key path" +#~ msgstr "Ιδιωτικό αποθετήριο" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Ενεργοποίηση ζημιών" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Απενεργοποιήθηκε" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Δεν είναι δυνατή η διαγραφή του μοναδικού διαχειριστή στο σύστημα." diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 7c860ee08..b9cd57f0c 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-03-12 13:03+0000\n" "Last-Translator: Fioddor Superconcentrado \n" "Language-Team: Spanish calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1048,15 +1049,15 @@ msgstr "" "Solo los usuarios del grupo calibre podrán acceder a la app. Todos " "los usuarios con acceso pueden usar todas las bibliotecas." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Usar bibliotecas Calibre" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "Calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "Biblioteca de libros electrónicos" @@ -1130,7 +1131,7 @@ msgstr "{name} eliminado." msgid "Could not delete {name}: {error}" msgstr "No se pudo eliminar {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1143,7 +1144,7 @@ msgstr "" "muchas funciones avanzadas que normalmente no requieren atención. También " "ofrece una terminal de consola basada en web." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1155,7 +1156,7 @@ msgstr "" "puertos específicos del firewall y opciones avanzadas de red como bonding, " "bridging y manejo de VLAN." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1164,7 +1165,7 @@ msgstr "" "Puede acceder cualquier usuario/a en {box_name} " "que pertenezca al grupo «admin»." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1172,12 +1173,12 @@ msgstr "" "Cockpit requiere acceso a través de un nombre de dominio. Si se usa una " "dirección IP como parte de la URL no funcionará." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Administración del servidor" @@ -1342,7 +1343,7 @@ msgstr "Mostrando aplicaciones y funciones avanzadas" msgid "Hiding advanced apps and features" msgstr "Ocultando aplicaciones y funciones avanzadas" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1354,7 +1355,7 @@ msgstr "" "SIP y de otros tipos pueden usarlo para establecer llamadas entre partes que " "no tienen otra alternativa disponible." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, fuzzy, python-brace-format #| msgid "" #| "It is not meant to be used directly by users. Servers such as matrix-" @@ -1368,11 +1369,11 @@ msgstr "" "servidores como matrix-synapse tienen que configurarse con los detalles que " "se proporcionan aquí." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "Asistente VoIP" @@ -1404,7 +1405,7 @@ msgstr "Use las siguientes URL para configurar su servidor de comunicación:" msgid "Use the following shared authentication secret:" msgstr "Use la clave compartida siguiente:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1412,11 +1413,11 @@ msgstr "" "El servidor de tiempo de red (servicio NTP) mantiene sincronizada la hora " "del sistema con servidores de Internet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Fecha y hora" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Hora sincronizada con el servidor NTP" @@ -1445,11 +1446,11 @@ msgstr "Error al definir zona horaria: {exception}" msgid "Time zone set" msgstr "Zona horaria asignada" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge es un cliente BitTorrent con interfaz web." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1457,17 +1458,17 @@ msgstr "" "La clave de acceso por defecto es 'deluge' pero es muy recomendable que nada " "más activar el servicio acceda al mismo y la cambie." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Descargar archivos usando aplicaciones BitTorrent" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "Cliente web de BitTorrent" @@ -1493,18 +1494,18 @@ msgid "Diagnostics" msgstr "Diagnósticos" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "ok." #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "Falló" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "error" @@ -1595,7 +1596,7 @@ msgstr "Resultado" msgid "Diagnostic Test" msgstr "Test de diagnóstico" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1603,12 +1604,12 @@ msgstr "" "diaspora* es una red social descentralizada en la que puede controlar sus " "propios datos." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Red Social Federada" @@ -1669,7 +1670,7 @@ msgstr "Registro de usuarias/os activado" msgid "User registrations disabled" msgstr "Registro de usuarias/os desactivado" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1680,7 +1681,7 @@ msgstr "" "24h) será muy difícil para los demás encontrarle en Internet. Este servicio " "permitirá a otros encontrar los servicios que ofrece {box_name}." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1697,11 +1698,11 @@ msgstr "" "asigna su nombre DNS a esta nueva IP de forma que cualquiera que pida su " "nombre DNS obtendrá la dirección IP actualizada." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Cliente de DNS dinámico" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Nombre de dominio dinámico" @@ -1938,7 +1939,7 @@ msgstr "Configurar DNS dinámico" msgid "Dynamic DNS Status" msgstr "Estado del DNS dinámico" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1946,7 +1947,7 @@ msgstr "" "XMPP es un protocolo de comunicación abierto y estándar. Puede ejecutar y " "configurar su servidor XMPP (ejabberd) aquí." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web clientcliente XMPP. Cuando se activa, ejabberd está disponible " "para cualquier usuario con acceso a {box_name}." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, fuzzy, python-brace-format #| msgid "" #| "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install " @@ -1972,12 +1973,12 @@ msgstr "" "Instalar la app Coturn o configurar un servidor " "externo." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Servidor de Chat" @@ -2111,52 +2112,20 @@ msgstr "Servidor de Chat" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Error al establecer nombre de dominio: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -#, fuzzy -#| msgid "Directory does not exist." -msgid "User does not exist" -msgstr "La carpeta no existe." - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "unavailable" @@ -2185,18 +2154,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "No certificado" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Indique un nombre de usuario válido." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Indique un nombre de usuario válido." + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Dominio" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Administrar bibliotecas" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Activado" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Desactivado" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2215,191 +2229,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Administrar bibliotecas" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Desactivado" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "El cable está conectado" +#| msgid "Enabled" +msgid "Enable" +msgstr "Activado" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Deleted selected snapshots" -msgid "Delete selected" -msgstr "Las instantáneas seleccionadas fueron eliminadas" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Crear una copia de seguridad nueva" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Añadir" -#: plinth/modules/email_server/templates/email_domains.html:19 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Dominios" + +#: plinth/modules/email_server/templates/email_server.html:19 #, fuzzy -#| msgid "New Backup" -msgid "New value" -msgstr "Nueva copia de seguridad" +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Gestionar instantáneas" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Actualización" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Tipo de servicio" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Path is not a directory." -msgid "You do not have a home directory." -msgstr "No es una carpeta." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Updated media directory" -msgid "Create home directory" -msgstr "Carpeta multimedia actualizada" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "Estado actual:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Asignar nombre de dominio" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Estado del certificado" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Private key of this machine" -msgid "Private key path" -msgstr "Clave privada en este dispositivo" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Principal" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Protección" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Dominios" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Activar daño" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Ha habido un error en la configuración." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Desactivado" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Configuración sin cambio" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2410,7 +2316,7 @@ msgstr "" "de su {box_name}. Mantenerlo activado y correctamente configurado reduce el " "riesgo de amenazas de seguridad desde Internet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Cortafuegos" @@ -2446,19 +2352,6 @@ msgstr "" msgid "Service/Port" msgstr "Servicio/Puerto" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Activado" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Desactivado" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Permitido" @@ -2546,7 +2439,7 @@ msgstr "Iniciar configuración" msgid "Setup Complete" msgstr "Configuración completada" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2564,7 +2457,7 @@ msgstr "" "cliente Git de línea de comandos o múltiples clientes gráficos. Y puedes " "compartir tu código con gente de todo el mundo." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2572,15 +2465,15 @@ msgstr "" "Para aprender más acerca de cómo usar Git visita el tutorial de Git." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Acceso de lectura y escritura para repositorios Git" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Alojamiento simple para Git" @@ -3010,7 +2903,7 @@ msgstr "Acerca de {box_name}" msgid "{box_name} Manual" msgstr "Manual de {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3022,7 +2915,7 @@ msgstr "" "anonimato al enviar trafico cifrado a través de una red mantenida por " "voluntarios alrededor del mundo." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3030,7 +2923,7 @@ msgstr "" "Para ampliar información sobre I2P visite el sitio web del proyecto." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -3038,19 +2931,19 @@ msgstr "" "La primer visita a la interfaz web provista iniciará el proceso de " "configuración." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Administrar la aplicación I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Red anónima" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "Proxy I2P" @@ -3096,7 +2989,7 @@ msgstr "" "red par-a-par. Descarga los archivos al agregar los torrents o crea un nuevo " "torrent para compartir un archivo." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3106,7 +2999,7 @@ msgstr "" "de marcado, Markdown incluido, y funcionalidades comunes de los blogs tal " "como comentarios o fuentes RSS." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3120,15 +3013,15 @@ msgstr "" "\"{users_url}\">configuración de usuarios puede modificar estos permisos " "o añadir nuevos usuarios." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki y Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Aplicaciones wiki para ver y editar" @@ -3207,11 +3100,11 @@ msgstr "{title} eliminado." msgid "Could not delete {title}: {error}" msgstr "No se pudo eliminar {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted es un servidor para Gobby, un editor de texto colaborativo." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3223,11 +3116,11 @@ msgstr "" "seleccione \"Conectar al servidor\" e introduzca el nombre de dominio de su " "{box_name}." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Servidor Gobby" @@ -3248,7 +3141,7 @@ msgstr "" "Inicie Gobby, seleccione \"Conectar al servidor\" e introduzca el nombre de " "dominio de su {box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3256,11 +3149,11 @@ msgstr "" "JSXC es un cliente web para XMPP. Se usa habitualmente con un servidor XMPP " "local." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Cliente de Chat" @@ -3269,7 +3162,7 @@ msgstr "Cliente de Chat" msgid "JavaScript license information" msgstr "Información de licencia de JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3284,7 +3177,7 @@ msgstr "" "mostrándose a sí mismo como propietario de un dominio a Let's Encrypt, " "autoridad de certificación (CA)." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3297,15 +3190,15 @@ msgstr "" "letsencrypt.org/repository/\">Acuerdo de suscripción de Let's Encrypt " "antes de usar este servicio." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Certificados" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3410,7 +3303,7 @@ msgstr "El certificado para el dominio {domain} ha sido eliminado con éxito" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Falló la eliminación del certificado para el dominio {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3427,7 +3320,7 @@ msgstr "" "funcionar. La federación de los servidores permite que las/os usuarias/os de " "un servidor Matrix contacten con los de otro servidor." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3437,7 +3330,7 @@ msgstr "" "Instalar la app Coturn o configurar un servidor " "externo." -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3534,7 +3427,7 @@ msgstr "" "TLS válido. Vaya a Let's Encrypt para " "obtener uno." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3546,7 +3439,7 @@ msgstr "" "colaboración. Puede usar MediaWiki para alojar un sitio tipo wiki, tomar " "notas o colaborar en proyectos con otras personas." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3560,7 +3453,7 @@ msgstr "" "MediaWiki en la página Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3568,12 +3461,12 @@ msgstr "" "Cualquiera con acceso a este wiki puede leerlo, pero solo quien se " "autentique en el sistema podrá modificar el contenido." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3666,7 +3559,7 @@ msgstr "Tema por defecto cambiado" msgid "Server URL updated" msgstr "URL de servidor actualizada" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3679,11 +3572,11 @@ msgstr "" "defecto (30000). Para acceder al servidor necesitará un Cliente Minetest." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Sandbox de bloques" @@ -3757,7 +3650,7 @@ msgstr "Configuración PVP actualizada" msgid "Damage configuration updated" msgstr "Configuración de daño actualizada" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3774,15 +3667,15 @@ msgstr "" "reproductores portátiles, teléfonos móviles, televisores, consolas como PS3 " "y Xbox o aplicaciones como Totem y Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Servidor de emisión multimedia" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Servidor multimedia básico" @@ -3826,7 +3719,7 @@ msgstr "La carpeta especificada no existe." msgid "Updated media directory" msgstr "Carpeta multimedia actualizada" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3836,7 +3729,7 @@ msgstr "" "para intercambiar archivos grandes. Puede participar en múltiples redes de " "pares, incluyendo eDonkey, Kademlia, Overnet, BitTorrent y DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3847,7 +3740,7 @@ msgstr "" "también a través de cualquiera de las interfaces externas para móvil o " "escritorio, o de una interfaz «telnet». Vea el manual." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3855,16 +3748,16 @@ msgstr "" "Los archivos descargados en {box_name} se encuentran en el directorio «/var/" "lib/mldonkey/»." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Descargar archivos usando aplicaciones para eDonkey" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Compartir archivos entre pares" @@ -3876,7 +3769,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3896,7 +3789,7 @@ msgstr "" "info/getting-started-ssh/\">Documentación de Monkeysphere SSH para más " "detalles." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3914,7 +3807,7 @@ msgstr "" "necesitará instalar el software disponible en Sitio Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4038,7 +3931,7 @@ msgstr "Publicada la clave en el servidor de claves." msgid "Error occurred while publishing key." msgstr "Se ha producido un error al publicar la clave." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4046,7 +3939,7 @@ msgstr "" "Mumble es un software libre de gran calidad para chat de voz, de baja " "latencia y con cifrado." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4056,11 +3949,11 @@ msgstr "" "disponibles Clientes para conectar desde " "sus dispositivos de escritorio o Android." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Chat de voz" @@ -4117,7 +4010,7 @@ msgstr "Todas las apps web" msgid "Services" msgstr "Servicios" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4125,7 +4018,7 @@ msgstr "" "Configurar dispositivos de red. Conectar con Internet mediante Ethernet, Wi-" "Fi o PPPoE. Compartir esa conexión con otros dispositivos de la red." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4133,11 +4026,11 @@ msgstr "" "Los dispositivos administrados mediante otros métodos quizá no estén " "disponibles para configurarse aquí." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Redes" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC en uso sobre IPv{kind}" @@ -4697,6 +4590,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Esta conexión no está activa." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Protección" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5178,7 +5076,7 @@ msgstr "genérica" msgid "TUN or TAP interface" msgstr "interfaz TUN o TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5269,7 +5167,7 @@ msgstr "Conexión {name} eliminada." msgid "Failed to delete connection: Connection not found." msgstr "Ha fallado la eliminación de la conexión: no se encontró." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5286,20 +5184,20 @@ msgstr "" "forma privada. También puede acceder a Internet a través de su {box_name} " "para añadir protección y anonimato." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Conectar a servicios VPN" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Red privada virtual" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5381,7 +5279,7 @@ msgstr "" msgid "Download my profile" msgstr "Descargar mi perfil" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5394,18 +5292,18 @@ msgstr "" "servicios de su {box_name} no son accesibles desde Internet. Esto incluye " "las siguientes situaciones:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} está detrás de un firewall restringido." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} está conectado a un router (inalámbrico) que usted no controla." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5413,7 +5311,7 @@ msgstr "" "Su proveedor de servicio no le da una dirección IP externa y, por el " "contrario, le facilita conexión a Internet a través de un NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5421,11 +5319,11 @@ msgstr "" "Su proveedor de servicios no le da una dirección IP estática por lo que su " "IP cambia cada vez que se conecta a Internet." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Su proveedor de servicios limita las conexiones entrantes." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5438,15 +5336,15 @@ msgstr "" "de servicios pagekite, por ejemplo pagekite." "net. En el futuro será posible usar su amigable {box_name} para esto." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Visibilidad pública" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "Dominio PageKite" @@ -5590,12 +5488,12 @@ msgstr "" "Vea las instrucciones para la configuración del cliente SSH" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Rendimiento" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5605,7 +5503,7 @@ msgstr "" "acerca del uso del hardware e identificar patrones de uso o si el hardware " "se sobrecarga de usuarios o servicios." -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5613,7 +5511,7 @@ msgstr "" "Las métricas de rendimiento las recolecta Performance Co-Pilot y se pueden " "ver empleando la app Cockpit." -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Monitorización del sistema" @@ -5684,7 +5582,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Apagar ahora" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5695,7 +5593,7 @@ msgstr "" "cabeceras HTTP, controlar el acceso y eliminar publicidad y otra basura de " "Internet. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5710,20 +5608,20 @@ msgstr "" "documentación en http://config.privoxy." "org/ o http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Proxy Web" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Acceso a {url} con proxy {proxy} en tcp {kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5740,7 +5638,7 @@ msgstr "" "conectado de forma que distintos clientes Quassel pueden conectarse y " "desconectarse de este servidor desde un ordenador de escritorio o un móvil." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your escritorio y móvil." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "Cliente IRC" @@ -5764,7 +5662,7 @@ msgstr "Cliente IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5779,7 +5677,7 @@ msgstr "" "supported-clients\">aplicación cliente soportada. Cualquier persona " "autenticada en {box_name} puede acceder a Radicale." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5789,12 +5687,12 @@ msgstr "" "de nuevos calendarios y agendas. No soporta añadir eventos o contactos, que " "debe hacerse usando un cliente separado." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Calendario y Contactos" @@ -5875,7 +5773,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuración de derechos de acceso actualizada" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5887,7 +5785,7 @@ msgstr "" "un cliente de correo, incluyendo soporte MIME, agenda de contactos, " "organización de carpetas, búsqueda de mensajes y corrección ortográfica." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5901,7 +5799,7 @@ msgstr "" "sobre SSL (recomendado) rellene el campo del servidor como imaps://" "imap.ejemplo.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5917,11 +5815,11 @@ msgstr "" "google.com/settings/security/lesssecureapps\">https://www.google.com/" "settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "Cliente de correo" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5929,7 +5827,7 @@ msgstr "" "Samba permite compartir archivos y carpetas entre FreedomBox y otras " "computadoras en su red local." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5942,11 +5840,11 @@ msgstr "" "la dirección \\\\{hostname} (en Windows) o smb://{hostname}.local (en Linux " "y Mac). Puede elegir entre tres tipos para compartir: " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Compartir en abierto - accesible para todo el mundo en su red local." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5954,7 +5852,7 @@ msgstr "" "Compartir en grupo - accesible solo para las personas que estén en el grupo " "freedombox-share." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5962,15 +5860,15 @@ msgstr "" "Compartir en mi cuenta - todos los miembros del grupo freedombox-share " "disponen de un espacio privado propio." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Acceso a los elementos compartidos privados" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Sistema de archivos en red" @@ -6089,7 +5987,7 @@ msgstr "Compartición desactivada." msgid "Error disabling share: {error_message}" msgstr "Error al desactivar compartición: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6097,7 +5995,7 @@ msgstr "" "Searx es un motor de búsqueda en Internet que respeta la privacidad. Recoge " "y muestra los resultados de múltiples buscadores." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6105,15 +6003,15 @@ msgstr "" "Searx se puede usar para evitar el rastreo y la creación de perfiles que " "realizan los buscadores. Por defecto no almacena cookies." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Buscar en la web" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Buscador web" @@ -6295,11 +6193,11 @@ msgstr "Error al definir el acceso restringido: {exception}" msgid "Updated security configuration" msgstr "Configuración de seguridad actualizada" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli le permite guardar y compartir marcadores." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6307,15 +6205,15 @@ msgstr "" "Note que Shaarli solo soporta una cuenta de usuaria/o, que debe configurar " "en el primer acceso." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Marcadores" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6325,7 +6223,7 @@ msgstr "" "tráfico en Internet. Se puede usar para eludir el filtrado o la censura de " "Internet." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6338,7 +6236,7 @@ msgstr "" "Los dispositivos locales pueden conectarse a este proxy y la información se " "enviará cifrada a través del servidor Shadowsocks." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6346,11 +6244,11 @@ msgstr "" "Para usar Shadowsocks una vez configurado debe indicar la URL del proxy en " "su dispositivo, navegador o aplicación como http://freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Proxy Socks5" @@ -6489,7 +6387,7 @@ msgstr "Editar compartición" msgid "Share deleted." msgstr "Compartición eliminada." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6499,7 +6397,7 @@ msgstr "" "btrfs. Éstas pueden emplearse para recuperar el sistema a un estado anterior " "correcto en caso de cambios no deseados." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6511,7 +6409,7 @@ msgstr "" "instantáneas más antiguas se eliminarán automáticamente según la siguiente " "configuración." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for las copias de seguridad ya que se almacenan en la " "misma partición. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Instantáneas" @@ -6728,7 +6626,7 @@ msgstr "Debe reiniciar el sistema para completar la restauración." msgid "Rollback to Snapshot" msgstr "Restaurar a instantánea" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6740,7 +6638,7 @@ msgstr "" "realizar tareas de administración, copiar archivos o ejecutar otros " "servicios a través de esas conexiones." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Servidor de intérprete de órdenes seguro (SSH)" @@ -6786,7 +6684,7 @@ msgstr "Acceso SSH con clave desactivado." msgid "SSH authentication with password enabled." msgstr "Acceso SSH con clave activado." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Inicio de sesión único" @@ -6794,7 +6692,7 @@ msgstr "Inicio de sesión único" msgid "Login" msgstr "Inicio de sesión" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6805,106 +6703,106 @@ msgstr "" "{box_name}. Puede ver el medio de almacenamiento que está usando, montar y " "desmontar medios extraíbles, ampliar la partición raíz, etc." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Almacenamiento" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Falló la operación." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Se ha cancelado la operación." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "El dispositivo ya se está desmontando." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "No se soporta esta operación por falta de un driver o herramienta." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "La operación agotó el tiempo." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "La operación podría activar un disco que está en estado de reposo." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Tratando de desmontar un dispositivo ocupado." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Ya se ha cancelado la operación." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "No tiene autorización para la operación solicitada." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "El dispositivo ya está montado." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "El dispositivo no está montado." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "La operación solicitada no está permitida." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "El dispositivo está ya montado por otro usuario." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Poco espacio en la partición del sistema: {percent_used}% usado, " "{free_space} libre." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Poco espacio en disco" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Fallo de disco inminente" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7029,7 +6927,7 @@ msgstr "El dispositivo ya se puede desconectar con seguridad." msgid "Error ejecting device: {error_message}" msgstr "Error al expulsar el dispositivo: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7041,7 +6939,7 @@ msgstr "" "modificación o borrado de archivos en uno de los dispositivos se replica " "automáticamente en todos los demás que también estén ejecutando Syncthing." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7060,20 +6958,20 @@ msgstr "" "interfaz web en {box_name} solo está disponible para quienes pertenezcan a " "los grupos \"admin\" o \"syncthing-access\"." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Administrar Syncthing" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Sincronización de archivos" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7086,7 +6984,7 @@ msgstr "" "de los nodos fallara, sus archivos seguirían estando disponibles a través " "del resto de nodos." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7097,11 +6995,11 @@ msgstr "" "defecto. Se pueden añadir presentadores adicionales, los cuales presentarán " "este nodo a los otros nodos de almacenamiento." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Almacén de archivos distribuido" @@ -7140,7 +7038,7 @@ msgstr "Presentadores conectados" msgid "Remove" msgstr "Eliminar" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7154,40 +7052,40 @@ msgstr "" "download/download-easy.html.en\">Navegador Tor para tener la mejor " "protección cuando navega por la red." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Servicio Tor Onion" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Proxy Socks para Tor" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Puente de retransmisión Tor" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Puerto de servidor Tor disponible" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Transporte Obfs3 registrado" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Transporte Obfs4 registrado" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Acceso a URL {url} sobre tcp {kind} vía Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmar uso de Tor en {url} sobre tcp {kind}" @@ -7341,15 +7239,11 @@ msgstr "" "Un puerto SOCKS de Tor está disponible en su %(box_name)s en el puerto TCP " "9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Configuración sin cambio" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission es un cliente BitTorrent con interfaz web." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7357,17 +7251,17 @@ msgstr "" "BitTorrent es un protocolo para compartir archivos entre pares. Recuerde que " "BitTorrent no es anónimo." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" "Por favor, no cambie el puerto predeterminado para el servicio Transmission." -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7377,7 +7271,7 @@ msgstr "" "publicar desde cualquier lugar, a la vez que mantiene un aspecto de " "aplicación de escritorio en la medida de lo posible." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any persona con una cuenta de acceso en {box_name}." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7394,15 +7288,15 @@ msgstr "" "Cuando emplee una aplicación de móvil o de escritorio para Tiny Tiny RSS, " "use la URL /tt-rss-app para conectar." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Leer y suscribirse a nuevos agregadores" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Lector de noticias" @@ -7410,13 +7304,13 @@ msgstr "Lector de noticias" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Bifurcación)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Buscar y aplicar las últimas actualizaciones del software y de seguridad." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7430,19 +7324,26 @@ msgstr "" "tiempo. Si se decide retrasar el reinicio del sistema, éste se hará de forma " "automática a las 02:00 h." -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Actualización" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Actualizaciones" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox actualizado" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "No se pudo iniciar la actualización de la distribución" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " @@ -7453,11 +7354,11 @@ msgstr "" "libres. Si está habilitada, la actualización de la distribución se " "reintentará tras 24h ." -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "Iniciada la actualización de la distribución" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7652,7 +7553,7 @@ msgstr "No se ha podido iniciar la actualización." msgid "Frequent feature updates activated." msgstr "Las actualizaciones funcionales frecuentes están activadas." -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7663,7 +7564,7 @@ msgstr "" "requieren que además la cuenta de usuario conste en un grupo para " "autorizarles a acceder." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7675,15 +7576,15 @@ msgstr "" "sólo los usuarios del grupo admin pueden cambiar configuraciones de " "apps o del sistema." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Usuarias/os y grupos" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Acceso a todos los servicios y configuraciones del sistema" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Comprobar la entrada LDAP \"{search_item}\"" @@ -7929,11 +7830,11 @@ msgstr "Cambiar clave de acceso" msgid "Password changed successfully." msgstr "Clave de acceso cambiada con éxito." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WirGuard es un túnel VPN rápido, moderno y seguro." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7942,7 +7843,7 @@ msgstr "" "Se puede usar para conectar a un proveedor VPN que soporte WireGuard y " "dirigir el tráfico saliente de su {box_name} a través de una VPN." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8262,7 +8163,7 @@ msgstr "Eliminar conexión al servidor" msgid "Server deleted." msgstr "Servidor eliminado." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8271,7 +8172,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8280,28 +8181,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Dirección" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8319,7 +8220,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8341,7 +8242,7 @@ msgstr "" "de mapa y calendario. Se pueden compartir fotos sueltas con otras personas " "enviándoles un enlace directo." -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8352,11 +8253,11 @@ msgstr "" "Para añadir más usuarios hay que crear cuentas con el mismo nombre tanto en " "Zoph como en {box_name} ." -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Organizador de fotografías" @@ -8393,23 +8294,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Genérica" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Error durante la instalación" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "instalando" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "descargando" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "cambio de medio" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "archivo de configuración: {file}" @@ -8479,6 +8380,10 @@ msgstr "Funcionalidad central e interfaz web para %(box_name)s" msgid " Home" msgstr " Inicio" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Principal" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Aplicaciones" @@ -8776,6 +8681,76 @@ msgstr "%(percentage)s%% completado" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Directory does not exist." +#~ msgid "User does not exist" +#~ msgstr "La carpeta no existe." + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Desactivado" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "El cable está conectado" + +#, fuzzy +#~| msgid "Deleted selected snapshots" +#~ msgid "Delete selected" +#~ msgstr "Las instantáneas seleccionadas fueron eliminadas" + +#, fuzzy +#~| msgid "New Backup" +#~ msgid "New value" +#~ msgstr "Nueva copia de seguridad" + +#, fuzzy +#~| msgid "Path is not a directory." +#~ msgid "You do not have a home directory." +#~ msgstr "No es una carpeta." + +#, fuzzy +#~| msgid "Updated media directory" +#~ msgid "Create home directory" +#~ msgstr "Carpeta multimedia actualizada" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "Estado actual:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Asignar nombre de dominio" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Estado del certificado" + +#, fuzzy +#~| msgid "Private key of this machine" +#~ msgid "Private key path" +#~ msgstr "Clave privada en este dispositivo" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Activar daño" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Desactivado" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "No se puede eliminar la única cuenta de administración del sistema." diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index 7580ee01a..7a1cc7da7 100644 --- a/plinth/locale/fa/LC_MESSAGES/django.po +++ b/plinth/locale/fa/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-09-07 11:34+0000\n" "Last-Translator: Seyed mohammad ali Hosseinifard \n" "Language-Team: Persian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1139,7 +1140,7 @@ msgstr "{name} پاک شد." msgid "Could not delete {name}: {error}" msgstr "نشد که {name} پاک شود: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1148,7 +1149,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1156,25 +1157,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 #, fuzzy #| msgid "Administrator Account" msgid "Server Administration" @@ -1338,7 +1339,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1346,7 +1347,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -2080,50 +2081,20 @@ msgstr "سرور وب" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "خطا در هنگام تنظیم نام دامنه: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Available Domains" @@ -2152,18 +2123,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "بدون گواهی دیجیتال" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "نام کاربری معتبر نیست" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "نام کاربری معتبر نیست" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "دامنه" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Create Connection" +msgid "Aliases" +msgstr "ساختن اتصال" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "فعال" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "غیرفعال" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2180,189 +2196,85 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Create Connection" msgid "Manage Aliases" msgstr "ساختن اتصال" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "غیرفعال" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "سیم وصل است" +#| msgid "Enabled" +msgid "Enable" +msgstr "فعال" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete %(name)s" -msgid "Delete selected" -msgstr "پاک‌کردن %(name)s" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create Connection" msgid "Create a new email alias" msgstr "ساختن اتصال" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 #, fuzzy #| msgid "Address" msgid "Add" msgstr "نشانی" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "دامنه‌ها" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Delete %(name)s" +msgid "Manage Spam" +msgstr "پاک‌کردن %(name)s" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "نوع سرویس" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Connection" -msgid "Create home directory" -msgstr "ساختن اتصال" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "وضعیت کنونی:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Certificates (Let's Encrypt)" -msgid "Use Let's Encrypt" -msgstr "گواهی دیجیتال (Let's Encrypt)" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "نام دامنه تنظیم شد" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "وضعیت گواهی دیجیتال" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create Connection" -msgid "Private key path" -msgstr "ساختن اتصال" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "امنیت" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "دامنه‌ها" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enabled" -msgid "Enabled aliases" -msgstr "فعال" +#| msgid "Current Network Configuration" +msgid "Error updating configuration" +msgstr "پیکربندی فعلی شبکه" -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "غیرفعال" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2373,7 +2285,7 @@ msgstr "" "خروجی شبکه را در {box_name} شما کنترل می‌کند. فعال نگه‌داشتن فایروال و تنظیم " "درست آن خطر تهدیدهای امنیتی از طرف اینترنت را کم می‌کند." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "فایروال" @@ -2409,19 +2321,6 @@ msgstr "" msgid "Service/Port" msgstr "سرویس/پورت" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "فعال" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "غیرفعال" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "مجاز" @@ -2500,7 +2399,7 @@ msgstr "آغاز راه‌اندازی" msgid "Setup Complete" msgstr "راه‌اندازی کامل شد" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2511,21 +2410,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2951,7 +2850,7 @@ msgstr "دربارهٔ {box_name}" msgid "{box_name} Manual" msgstr "کتاب راهنمای {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2959,7 +2858,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the ویکی %(box_name)s را ببینید." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy msgid "Manage I2P application" msgstr "فعال‌سازی برنامه" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 #, fuzzy msgid "Anonymity Network" msgstr "رفتن به تنظیمات شبکه" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -3028,7 +2927,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -3045,7 +2944,7 @@ msgstr "" "پشتیبانی می‌کند. اگر این برنامه فعال باشد، وبلاگ‌ها و ویکی‌ها از نشانی /ikiwiki قابل دسترس خواهند بود." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3054,17 +2953,17 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 #, fuzzy #| msgid "Manage Wikis and Blogs" msgid "Wiki and Blog" msgstr "مدیریت ویکی‌ها و وبلاگ‌ها" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 #, fuzzy msgid "View and edit wiki applications" msgstr "سرویس‌ها و برنامه‌ها" @@ -3146,11 +3045,11 @@ msgstr "{name} پاک شد." msgid "Could not delete {title}: {error}" msgstr "نشد که {name} پاک شود: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3158,11 +3057,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -3183,17 +3082,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -3202,7 +3101,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -3223,7 +3122,7 @@ msgstr "" "برای این کار {box_name} به Let's Encrypt (که یک مرجع صدور گواهی دیجیتال است) " "اثبات می‌کند که مالک دامنه است." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -3243,19 +3142,19 @@ msgstr "" "\"https://letsencrypt.org/repository/\">قرارداد اشتراک Let's Encrypt " "بخوانید و آن را بپذیرید." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "گواهی دیجیتال (Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "وضعیت گواهی دیجیتال" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3365,7 +3264,7 @@ msgstr "گواهی دامنهٔ {domain} با موفقیت باطل شد" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "باطل‌کردن گواهی دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3375,14 +3274,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3454,7 +3353,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3462,7 +3361,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3471,18 +3370,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3579,7 +3478,7 @@ msgstr "" msgid "Server URL updated" msgstr "{name} پاک شد." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3592,11 +3491,11 @@ msgstr "" "برای اتصال به سرور به یک برنامهٔ ماین‌تست نیاز است." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 #, fuzzy msgid "Block Sandbox" msgstr "بازی مکعب‌ها (Minetest)" @@ -3676,7 +3575,7 @@ msgstr "پیکربندی به‌روز شد" msgid "Damage configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3687,15 +3586,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3735,37 +3634,37 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy msgid "MLDonkey" msgstr "مانکی‌اسفیر" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3779,7 +3678,7 @@ msgstr "مانکی‌اسفیر" msgid "AMLDonkey" msgstr "مانکی‌اسفیر" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3798,7 +3697,7 @@ msgstr "" "برای اطلاعات بیشتر راهنمای SSH مانکی‌اسفیر را بخوانید." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3815,7 +3714,7 @@ msgstr "" "در وبسایت مانکی‌اسفیر " "است نصب کند." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 #, fuzzy msgid "Monkeysphere" @@ -3941,13 +3840,13 @@ msgstr "کلید در پایگاه کلیدها منتشر شد." msgid "Error occurred while publishing key." msgstr "هنگام انتشار کلید خطایی رخ داد." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "مامبل (Mumble) یک نرم‌افزار چت صوتی متن‌باز، کم‌تأخیر، و باکیفیت است." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3957,11 +3856,11 @@ msgstr "" "\"http://mumble.info\">نرم‌افزارهایی برای اتصال به سرور مامبل برای " "کامپیوتر رومیزی و دستگاه‌های اندروید در دسترس است." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -4018,23 +3917,23 @@ msgstr "" msgid "Services" msgstr "سرویس" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "شبکه‌ها" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "در حال استفاده از DNSSEC روی IPv{kind}" @@ -4546,6 +4445,11 @@ msgstr "آی‌پی ن۶" msgid "This connection is not active." msgstr "این اتصال فعال نیست." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "امنیت" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5036,7 +4940,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "واسط" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5133,7 +5037,7 @@ msgstr "اتصال {name} پاک شد." msgid "Failed to delete connection: Connection not found." msgstr "پاک‌کردن اتصال شکست خورد: اتصال پیدا نشد." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5144,24 +5048,24 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "نوع اتصال" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "باز" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5227,7 +5131,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5236,33 +5140,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5271,15 +5175,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 #, fuzzy #| msgid "Available Domains" msgid "PageKite Domain" @@ -5415,25 +5319,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -5494,14 +5398,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5511,20 +5415,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5535,7 +5439,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5555,7 +5459,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5565,19 +5469,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5648,7 +5552,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5656,7 +5560,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5665,7 +5569,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5675,18 +5579,18 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 #, fuzzy msgid "Email Client" msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5695,31 +5599,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Interface" msgid "Network File Storage" @@ -5851,27 +5755,27 @@ msgstr "مشترک" msgid "Error disabling share: {error_message}" msgstr "خطا هنگام نصب برنامه: {error}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 #, fuzzy #| msgid "Web Server" msgid "Web Search" @@ -6043,32 +5947,32 @@ msgstr "خطا در هنگام تنظیم منطقهٔ زمانی: {exception}" msgid "Updated security configuration" msgstr "پیکربندی عمومی" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6077,17 +5981,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -6234,14 +6138,14 @@ msgstr "مشترک" msgid "Share deleted." msgstr "{name} پاک شد." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6249,14 +6153,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 #, fuzzy #| msgid "Delete %(name)s" msgid "Storage Snapshots" @@ -6468,7 +6372,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6476,7 +6380,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6523,7 +6427,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6531,7 +6435,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6539,110 +6443,110 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, fuzzy, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size} بایت" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 #, fuzzy #| msgid "The requested domain is already registered." msgid "The device is already mounted." msgstr "دامنهٔ درخواستی از قبل ثبت شده است." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6769,7 +6673,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6777,7 +6681,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6789,20 +6693,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6810,7 +6714,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6818,11 +6722,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6859,7 +6763,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6868,40 +6772,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -7029,58 +6933,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "دِلوگ (Transmission) یک برنامهٔ بیت‌تورنت با رابط کاربری تحت وب است." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -7088,12 +6988,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7101,34 +7001,41 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Create..." msgid "Updates" msgstr "ساختن..." -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy msgid "FreedomBox Updated" msgstr "FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy msgid "Distribution update started" msgstr "برنامه نصب شد." -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7304,14 +7211,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7319,15 +7226,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7573,18 +7480,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7918,7 +7825,7 @@ msgstr "پاک‌کردن اتصال" msgid "Server deleted." msgstr "{name} پاک شد." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7927,7 +7834,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7936,28 +7843,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "نشانی" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Manage Wikis and Blogs" msgid "Website and Blog" @@ -7975,7 +7882,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7988,7 +7895,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7996,11 +7903,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8036,23 +7943,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -8113,6 +8020,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 #, fuzzy msgid " Apps" @@ -8394,6 +8305,61 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "غیرفعال" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "سیم وصل است" + +#, fuzzy +#~| msgid "Delete %(name)s" +#~ msgid "Delete selected" +#~ msgstr "پاک‌کردن %(name)s" + +#, fuzzy +#~| msgid "Create Connection" +#~ msgid "Create home directory" +#~ msgstr "ساختن اتصال" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "وضعیت کنونی:" + +#, fuzzy +#~| msgid "Certificates (Let's Encrypt)" +#~ msgid "Use Let's Encrypt" +#~ msgstr "گواهی دیجیتال (Let's Encrypt)" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "نام دامنه تنظیم شد" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "وضعیت گواهی دیجیتال" + +#, fuzzy +#~| msgid "Create Connection" +#~ msgid "Private key path" +#~ msgstr "ساختن اتصال" + +#, fuzzy +#~| msgid "Enabled" +#~ msgid "Enabled aliases" +#~ msgstr "فعال" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "غیرفعال" + #, fuzzy #~ msgid "Public registration disabled" #~ msgstr "برنامه نصب شد." diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 5651211c2..8ed801362 100644 --- a/plinth/locale/fake/LC_MESSAGES/django.po +++ b/plinth/locale/fake/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth 0.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1187,7 +1188,7 @@ msgstr "{name} DELETED." msgid "Could not delete {name}: {error}" msgstr "COULD NOT DELETE {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1196,7 +1197,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1204,7 +1205,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, the blogs and wikis will be available from /IKIWIKI." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 #, fuzzy #| msgid "Server domain" msgid "Server Administration" @@ -1390,7 +1391,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1398,7 +1399,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as /DELUGE PATH ON THE WEB SERVER. THE DEFAULT PASSWORD IS 'DELUGE', BUT " "YOU SHOULD LOG IN AND CHANGE IT IMMEDIATELY AFTER ENABLING THIS SERVICE." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 #, fuzzy #| msgid "Enable Deluge" msgid "Deluge" msgstr "ENABLE DELUGE" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 #, fuzzy #| msgid "BitTorrent Web Client (Deluge)" msgid "BitTorrent Web Client" @@ -1550,12 +1551,12 @@ msgid "Diagnostics" msgstr "DIAGNOSTICS" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 #, fuzzy #| msgid "Setup failed." @@ -1563,7 +1564,7 @@ msgid "failed" msgstr "SETUP FAILED." #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "" @@ -1650,18 +1651,18 @@ msgstr "RESULT" msgid "Diagnostic Test" msgstr "DIAGNOSTIC TEST" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." msgstr "" -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "" @@ -1718,7 +1719,7 @@ msgstr "APPLICATIONS" msgid "User registrations disabled" msgstr "APPLICATIONS" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, fuzzy, python-brace-format #| msgid "" #| "If your internet provider changes your IP address periodic (i.e. every " @@ -1734,7 +1735,7 @@ msgstr "" "IT MAY BE HARD FOR OTHERS TO FIND YOU IN THE WEB. AND FOR THIS REASON NOBODY " "MAY FIND THE SERVICES WHICH ARE PROVIDED BY %(box_name)s, SUCH AS OWNCLOUD." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 #, fuzzy #| msgid "" #| "The solution is to assign a DNS name to your IP address and update the " @@ -1760,11 +1761,11 @@ msgstr "" "THE SERVER WILL ASSIGN YOUR DNS NAME WITH THE NEW IP AND IF SOMEONE FROM THE " "INTERNET ASKS FOR YOUR DNS NAME HE WILL GET YOUR CURRENT IP ANSWERED." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "DYNAMIC DNS CLIENT" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 #, fuzzy #| msgid "Domain Name" msgid "Dynamic Domain Name" @@ -2047,7 +2048,7 @@ msgstr "CONFIGURE DYNAMIC DNS" msgid "Dynamic DNS Status" msgstr "DYNAMIC DNS" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -2055,7 +2056,7 @@ msgstr "" "XMPP IS AN OPEN AND STANDARDIZED COMMUNICATION PROTOCOL. HERE YOU CAN RUN " "AND CONFIGURE YOUR XMPP SERVER, CALLED EJABBERD." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the web client " @@ -2071,19 +2072,19 @@ msgstr "" "ANY OTHER XMPP CLIENT." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -2207,50 +2208,20 @@ msgstr "WEB SERVER" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "ERROR SETTING DOMAIN NAME: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Enable Subdomains" @@ -2279,18 +2250,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "NO CERTFICATE" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "INVALID SERVER NAME" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "INVALID SERVER NAME" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "DOMAIN" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Create User" +msgid "Aliases" +msgstr "CREATE USER" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "ENABLED" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "DISABLED" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 #, fuzzy #| msgid "Enable Roundcube" @@ -2309,195 +2325,87 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Create User" msgid "Manage Aliases" msgstr "CREATE USER" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "DISABLED" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "CABLE IS CONNECTED" +#| msgid "Enabled" +msgid "Enable" +msgstr "ENABLED" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete %(name)s" -msgid "Delete selected" -msgstr "DELETE %(name)s" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "PageKite Account" msgid "Create a new email alias" msgstr "PAGEKITE ACCOUNT" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 #, fuzzy #| msgid "Address" msgid "Add" msgstr "ADDRESS" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -#, fuzzy -#| msgid "Update URL" -msgid "Update" -msgstr "UPDATE URL" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -#, fuzzy -#| msgid "Service type" -msgid "Service Alert" -msgstr "SERVICE TYPE" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Download directory" -msgid "You do not have a home directory." -msgstr "DOWNLOAD DIRECTORY" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create User" -msgid "Create home directory" -msgstr "CREATE USER" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "CURRENT STATUS:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Certificates (Let's Encrypt)" -msgid "Use Let's Encrypt" -msgstr "CERTIFICATES (LET'S ENCRYPT)" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "DOMAIN NAME SET" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "CERTIFICATE STATUS" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create User" -msgid "Private key path" -msgstr "CREATE USER" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "SECURITY" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 #, fuzzy #| msgid "Domain" msgid "Domains" msgstr "DOMAIN" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Create User" +msgid "Manage Spam" +msgstr "CREATE USER" + +#: plinth/modules/email_server/templates/email_server.html:30 +#, fuzzy +#| msgid "Service type" +msgid "Service Alert" +msgstr "SERVICE TYPE" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable PageKite" -msgid "Enabled aliases" -msgstr "ENABLE PAGEKITE" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "AN ERROR OCCURRED DURING CONFIGURATION." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "DISABLED" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "SETTING UNCHANGED" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, fuzzy, python-brace-format #| msgid "" #| "Firewall is a security system that controls the incoming and outgoing " @@ -2512,7 +2420,7 @@ msgstr "" "NETWORK TRAFFIC ON YOUR %(box_name)s. KEEPING A FIREWALL ENABLED AND " "PROPERLY CONFIGURED REDUCES RISK OF SECURITY THREAT FROM THE INTERNET." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "FIREWALL" @@ -2550,19 +2458,6 @@ msgstr "" msgid "Service/Port" msgstr "SERVICE/PORT" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "ENABLED" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "DISABLED" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "PERMITTED" @@ -2643,7 +2538,7 @@ msgstr "START SETUP" msgid "Setup Complete" msgstr "SETUP COMPLETE" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2654,21 +2549,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -3111,7 +3006,7 @@ msgstr "ABOUT {box_name}" msgid "{box_name} Manual" msgstr "{box_name} MANUAL" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3119,7 +3014,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s WIKI." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy #| msgid "Applications" msgid "Manage I2P application" msgstr "APPLICATIONS" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "TOR ANONYMITY NETWORK" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -3192,14 +3087,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3208,17 +3103,17 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 #, fuzzy #| msgid "wiki" msgid "ikiwiki" msgstr "WIKI" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "WIKI AND BLOG" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -3301,11 +3196,11 @@ msgstr "{name} DELETED." msgid "Could not delete {title}: {error}" msgstr "COULD NOT DELETE {name}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3313,11 +3208,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -3338,17 +3233,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 #, fuzzy #| msgid "IRC Client (Quassel)" msgid "Chat Client" @@ -3359,7 +3254,7 @@ msgstr "IRC CLIENT (QUASSEL)" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "A digital certficate allows users of a web service to verify the identity " @@ -3380,7 +3275,7 @@ msgstr "" "DOMAIN. IT DOES SO BY PROVING ITSELF TO BE THE OWNER OF A DOMAIN TO LET'S " "ENCRYPT, A CERTFICATE AUTHORITY (CA)." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 #, fuzzy #| msgid "" #| "Let's Encrypt is a free, automated, and open certificate authority, run " @@ -3399,19 +3294,19 @@ msgstr "" "READ AND AGREE WITH THE LET'S ENCRYPT SUBSCRIBER AGREEMENT BEFORE USING THIS SERVICE." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "CERTIFICATES (LET'S ENCRYPT)" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "CERTIFICATE STATUS" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3523,7 +3418,7 @@ msgstr "CERTIFICATE SUCCESSFULLY REVOKED FOR DOMAIN {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "FAILED TO REVOKE CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3533,14 +3428,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 #, fuzzy #| msgid "Chat Server (XMPP)" msgid "Matrix Synapse" @@ -3622,7 +3517,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3630,7 +3525,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3639,18 +3534,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3756,7 +3651,7 @@ msgstr "SETTING UNCHANGED" msgid "Server URL updated" msgstr "{name} DELETED." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3765,11 +3660,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" @@ -3851,7 +3746,7 @@ msgstr "CONFIGURATION UPDATED" msgid "Damage configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3862,15 +3757,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" @@ -3912,38 +3807,38 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy #| msgid "Monkeysphere" msgid "MLDonkey" msgstr "MONKEYSPHERE" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" @@ -3961,7 +3856,7 @@ msgstr "MONKEYSPHERE" msgid "AMLDonkey" msgstr "MONKEYSPHERE" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 #, fuzzy #| msgid "" #| "With Monkeysphere, a PGP key can be generated for each configured domain " @@ -3991,7 +3886,7 @@ msgstr "" "getting-started-ssh/\\\"> MONKEYSPHERE SSH DOCUMENTATION FOR MORE " "DETAILS." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 #, fuzzy #| msgid "" #| "With Monkeysphere, a PGP key can be generated for each configured domain " @@ -4020,7 +3915,7 @@ msgstr "" "getting-started-ssh/\\\"> MONKEYSPHERE SSH DOCUMENTATION FOR MORE " "DETAILS." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "MONKEYSPHERE" @@ -4164,7 +4059,7 @@ msgstr "PUBLISHED KEY TO KEYSERVER." msgid "Error occurred while publishing key." msgstr "ERROR OCCURRED WHILE PUBLISHING KEY." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4172,7 +4067,7 @@ msgstr "" "MUMBLE IS AN OPEN SOURCE, LOW-LATENCY, ENCRYPTED, HIGH QUALITY VOICE CHAT " "SOFTWARE." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4182,11 +4077,11 @@ msgstr "" "href=\"http://mumble.info\">CLIENTS TO CONNECT TO MUMBLE FROM YOUR " "DESKTOP AND ANDROID DEVICES ARE AVAILABLE." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -4245,23 +4140,23 @@ msgstr "" msgid "Services" msgstr "SERVICE" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "NETWORKS" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "USING DNSSEC ON IPV{kind}" @@ -4776,6 +4671,11 @@ msgstr "IPV6" msgid "This connection is not active." msgstr "THIS CONNECTION IS NOT ACTIVE." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "SECURITY" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5271,7 +5171,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "INTERFACE" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5364,7 +5264,7 @@ msgstr "CONNECTION {name} DELETED." msgid "Failed to delete connection: Connection not found." msgstr "FAILED TO DELETE CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, fuzzy, python-brace-format #| msgid "" #| "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5388,26 +5288,26 @@ msgstr "" "YOU CAN ALSO ACCESS THE REST OF THE INTERNET VIA %(box_name)s FOR ADDED " "SECURITY AND ANONYMITY." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "CONNECTION TYPE" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "OpenVPN" msgid "OpenVPN" msgstr "OPENVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "VIRTUAL PRIVATE NETWORK (OPENVPN)" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5486,7 +5386,7 @@ msgstr "PROFILE IS SPECIFIC TO EACH USER OF %(box_name)s. KEEP IT A SECRET." msgid "Download my profile" msgstr "DOWNLOAD MY PROFILE" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "PageKite is a system for exposing %(box_name)s services when you don't " @@ -5504,13 +5404,13 @@ msgstr "" "SERVICES ARE UNREACHABLE FROM THE REST OF THE INTERNET. THIS INCLUDES THE " "FOLLOWING SITUATIONS:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, fuzzy, python-brace-format #| msgid "%(box_name)s is behind a restricted firewall." msgid "{box_name} is behind a restricted firewall." msgstr "%(box_name)s IS BEHIND A RESTRICTED FIREWALL." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format #| msgid "" #| "%(box_name)s is connected to a (wireless) router which you don't control." @@ -5518,7 +5418,7 @@ msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "%(box_name)s IS CONNECTED TO A (WIRELESS) ROUTER WHICH YOU DON'T CONTROL." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5526,7 +5426,7 @@ msgstr "" "YOUR ISP DOES NOT PROVIDE YOU AN EXTERNAL IP ADDRESS AND INSTEAD PROVIDES " "INTERNET CONNECTION THROUGH NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 #, fuzzy #| msgid "" #| "Your ISP does not provide you a static IP address and your IP address " @@ -5538,11 +5438,11 @@ msgstr "" "YOUR ISP DOES NOT PROVIDE YOU A STATIC IP ADDRESS AND YOUR IP ADDRESS " "CHANGES EVERTIME YOU CONNECT TO INTERNET." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "YOUR ISP LIMITS INCOMING CONNECTIONS." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5561,19 +5461,19 @@ msgstr "" "PROVIDER, FOR EXAMPLE PAGEKITE.NET. IN " "FUTURE IT MIGHT BE POSSIBLE TO USE YOUR BUDDY'S %(box_name)s FOR THIS." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 #, fuzzy #| msgid "Pagekite" msgid "PageKite" msgstr "PAGEKITE" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 #, fuzzy #| msgid "Public Visibility (PageKite)" msgid "Public Visibility" msgstr "PUBLIC VISIBILITY (PAGEKITE)" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 #, fuzzy #| msgid "PageKite Account" msgid "PageKite Domain" @@ -5728,25 +5628,25 @@ msgstr "" "SEE SSH CLIENT SETUP INSTRUCTIONS" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" @@ -5817,7 +5717,7 @@ msgstr "" msgid "Shut Down Now" msgstr "SHUT DOWN NOW" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 #, fuzzy #| msgid "" #| "Privoxy is a non-caching web proxy with advanced filtering capabilities " @@ -5832,7 +5732,7 @@ msgstr "" "ENHANCING PRIVACY, MODIFYING WEB PAGE DATA AND HTTP HEADERS, CONTROLLING " "ACCESS, AND REMOVING ADS AND OTHER OBNOXIOUS INTERNET JUNK." -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, fuzzy, python-brace-format #| msgid "" #| "You can use Privoxy by modifying your browser proxy settings to your " @@ -5853,24 +5753,24 @@ msgstr "" "config.privoxy.org\">HTTP://CONFIG.PRIVOXY.ORG/ OR HTTP://P.P.\"" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "ENABLE PRIVOXY" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "PRIVOXY WEB PROXY" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "ACCESS {url} WITH PROXY {proxy} ON TCP{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, fuzzy, python-brace-format #| msgid "" #| "Quassel is an IRC application that is split into two parts, a \"core\" " @@ -5894,7 +5794,7 @@ msgstr "" "ONE OR MORE QUASSEL CLIENTS FROM A DESKTOP OR A MOBILE CAN BE USED TO " "CONNECT AND DISCONNECT FROM IT." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your DESKTOP AND MOBILE DEVICES ARE AVAILABLE." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -5920,7 +5820,7 @@ msgstr "QUASSEL IRC CLIENT" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5930,19 +5830,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -6011,7 +5911,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -6023,7 +5923,7 @@ msgstr "" "FROM AN EMAIL CLIENT, INCLUDING MIME SUPPORT, ADDRESS BOOK, FOLDER " "MANIPULATION, MESSAGE SEARCHING AND SPELL CHECKING." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -6044,7 +5944,7 @@ msgstr "" "IMAP.EXAMPLE.COM. FOR IMAP OVER SSL (RECOMMENDED), FILL THE " "SERVER FIELD LIKE IMAPS://IMAP.EXAMPLE.COM." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 #, fuzzy #| msgid "" #| "For Gmail, username will be your Gmail address, password will be your " @@ -6068,19 +5968,19 @@ msgstr "" "lesssecureapps\" >HTTPS://WWW.GOOGLE.COM/SETTINGS/SECURITY/LESSSECUREAPPS)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Email Client" msgstr "EMAIL CLIENT (ROUNDCUBE)" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -6089,31 +5989,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -6247,27 +6147,27 @@ msgstr "{name} DELETED." msgid "Error disabling share: {error_message}" msgstr "ERROR INSTALLING PACKAGES: {string} {details}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 #, fuzzy #| msgid "Web Server" msgid "Web Search" @@ -6445,11 +6345,11 @@ msgstr "ERROR SETTING TIME ZONE: {exception}" msgid "Updated security configuration" msgstr "GENERAL CONFIGURATION" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "SHAARLI ALLOWS YOU TO SAVE AND SHARE BOOKMARKS." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6463,24 +6363,24 @@ msgstr "" "a> PATH ON THE WEB SERVER. NOTE THAT SHAARLI ONLY SUPPORTS A SINGLE USER " "ACCOUNT, WHICH YOU WILL NEED TO SETUP ON THE INITIAL VISIT." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "SHAARLI" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 #, fuzzy #| msgid "Bookmarks (Shaarli)" msgid "Bookmarks" msgstr "BOOKMARKS (SHAARLI)" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6489,17 +6389,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -6648,14 +6548,14 @@ msgstr "EDIT USER" msgid "Share deleted." msgstr "{name} DELETED." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6663,14 +6563,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 #, fuzzy #| msgid "Create User" msgid "Storage Snapshots" @@ -6886,7 +6786,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6894,7 +6794,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "SECURE SHELL (SSH) SERVER" @@ -6941,7 +6841,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6949,7 +6849,7 @@ msgstr "" msgid "Login" msgstr "LOGIN" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6957,112 +6857,112 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "RESTORE" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "REPRO SERVICE IS RUNNING" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "THIS SERVICE ALREADY EXISTS" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "REPRO SERVICE IS NOT RUNNING" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7189,7 +7089,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7197,7 +7097,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7209,22 +7109,22 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 #, fuzzy #| msgid "Installation" msgid "Administer Syncthing application" msgstr "INSTALLATION" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7232,7 +7132,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7240,11 +7140,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -7281,7 +7181,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 #, fuzzy #| msgid "" #| "Tor is an anonymous communication system. You can learn more about it " @@ -7302,42 +7202,42 @@ msgstr "" "THE " "TOR BROWSER." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "TOR HIDDEN SERVICE" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "TOR BRIDGE RELAY" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "TOR RELAY PORT AVAILABLE" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "OBFS3 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "OBFS4 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "ACCESS URL {url} ON TCP{kind} VIA TOR" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "CONFIRM TOR USAGE AT {url} ON TCP{kind}" @@ -7490,17 +7390,13 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "A TOR SOCKS PORT IS AVAILABLE ON YOUR %(box_name)s ON TCP PORT 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "SETTING UNCHANGED" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 #, fuzzy #| msgid "Deluge is a BitTorrent client that features a Web UI." msgid "Transmission is a BitTorrent client with a web interface." msgstr "DELUGE IS A BITTORRENT CLIENT THAT FEATURES A WEB UI." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7512,25 +7408,25 @@ msgstr "" "BITTORRENT IS A PEER-TO-PEER FILE SHARING PROTOCOL. TRANSMISSION DAEMON " "HANDLES BITORRENT FILE SHARING. NOTE THAT BITTORRENT IS NOT ANONYMOUS." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Transmission" msgstr "TRANSMISSION BITTORRENT" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, the blogs and wikis will be available from /IKIWIKI." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -7564,12 +7460,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7577,36 +7473,45 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +#, fuzzy +#| msgid "Update URL" +msgid "Update" +msgstr "UPDATE URL" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update URL" msgid "Updates" msgstr "UPDATE URL" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" msgstr "FREEDOMBOX MANUAL" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "AUTOMATIC UPGRADES DISABLED" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7808,14 +7713,14 @@ msgstr "STARTING UPGRADE FAILED." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7823,15 +7728,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "USERS AND GROUPS" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "CHECK LDAP ENTRY \"{search_item}\"" @@ -8093,18 +7998,18 @@ msgstr "CHANGE PASSWORD" msgid "Password changed successfully." msgstr "PASSWORD CHANGED SUCCESSFULLY." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8450,7 +8355,7 @@ msgstr "DELETE CONNECTION" msgid "Server deleted." msgstr "{name} DELETED." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8459,7 +8364,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8468,28 +8373,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "ADDRESS" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8507,7 +8412,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8520,7 +8425,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8528,11 +8433,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8568,27 +8473,27 @@ msgstr "PPPOE" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 #, fuzzy #| msgid "Installation" msgid "installing" msgstr "INSTALLATION" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "SETTING UNCHANGED" -#: plinth/package.py:167 +#: plinth/package.py:193 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -8667,6 +8572,10 @@ msgstr "PLINTH ADMINISTRATIVE INTERFACE FOR THE %(box_name)s" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 #, fuzzy #| msgid "Apps" @@ -8967,6 +8876,66 @@ msgstr "%(percentage)s%% COMPLETE" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "DISABLED" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "CABLE IS CONNECTED" + +#, fuzzy +#~| msgid "Delete %(name)s" +#~ msgid "Delete selected" +#~ msgstr "DELETE %(name)s" + +#, fuzzy +#~| msgid "Download directory" +#~ msgid "You do not have a home directory." +#~ msgstr "DOWNLOAD DIRECTORY" + +#, fuzzy +#~| msgid "Create User" +#~ msgid "Create home directory" +#~ msgstr "CREATE USER" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "CURRENT STATUS:" + +#, fuzzy +#~| msgid "Certificates (Let's Encrypt)" +#~ msgid "Use Let's Encrypt" +#~ msgstr "CERTIFICATES (LET'S ENCRYPT)" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "DOMAIN NAME SET" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "CERTIFICATE STATUS" + +#, fuzzy +#~| msgid "Create User" +#~ msgid "Private key path" +#~ msgstr "CREATE USER" + +#, fuzzy +#~| msgid "Enable PageKite" +#~ msgid "Enabled aliases" +#~ msgstr "ENABLE PAGEKITE" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "DISABLED" + #, fuzzy #~| msgid "Applications" #~ msgid "Public registration enabled" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index e7c3e62b4..7862af9e6 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-10-22 22:43+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1059,15 +1060,15 @@ msgstr "" "cette application. Les utilisateurs ayant cet accès pourront utiliser toutes " "les collections." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Utilisation des collections de livres électroniques calibre" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "Bibliothèque de livres numériques" @@ -1142,7 +1143,7 @@ msgstr "{name} supprimé." msgid "Could not delete {name}: {error}" msgstr "La suppression de {name} a échoué : {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1156,7 +1157,7 @@ msgstr "" "sont pas nécessaires dans la majorité des cas. Un terminal web est également " "fourni pour pouvoir réaliser des opérations d’administration via une console." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1170,7 +1171,7 @@ msgstr "" "l’agrégation de liens (« bonding »), la création de ponts (« bridging ») et " "la gestion de réseaux virtuels VLAN." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1179,7 +1180,7 @@ msgstr "" "L’accès est autorisé à tout utilisateur faisant " "partie du groupe admin sur la {box_name}." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1188,12 +1189,12 @@ msgstr "" "fonctionnera pas si vous tentez d’y accédez en utilisant une adresse IP dans " "son URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Administration du serveur" @@ -1362,7 +1363,7 @@ msgstr "Les applications et fonctionnalités avancées seront affichées" msgid "Hiding advanced apps and features" msgstr "Les applications et les fonctionnalités avancées seront masquées" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1375,7 +1376,7 @@ msgstr "" "peuvent l’utiliser afin de mettre en relation des participants pour qui cela " "aurait été impossible autrement." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as ejabberd qui peuvent l’utiliser en reportant les détails " "fournis ici dans leur configuration." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "Assistant de VoIP" @@ -1423,7 +1424,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Veuillez utiliser les secrets d’authentification partagés suivants :" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1431,11 +1432,11 @@ msgstr "" "Le serveur de temps réseau est un programme permettant de maintenir l’heure " "du système synchronisée avec les serveurs Internet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Date et heure" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Heure synchronisée avec le serveur de temps NTP" @@ -1464,11 +1465,11 @@ msgstr "Erreur lors de la modification du fuseau horaire : {exception}" msgid "Time zone set" msgstr "Fuseau horaire modifié" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge est un client BitTorrent avec une interface utilisateur web." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1477,17 +1478,17 @@ msgstr "" "il est fortement recommandé de le modifier immédiatement après l’activation " "du service." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Téléchargement de fichiers avec les applications BitTorrent" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "Client web pour BitTorrent" @@ -1514,18 +1515,18 @@ msgid "Diagnostics" msgstr "Diagnostics" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "réussi" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "échoué" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "erreur" @@ -1617,7 +1618,7 @@ msgstr "Résultat" msgid "Diagnostic Test" msgstr "Test de diagnostic" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1625,12 +1626,12 @@ msgstr "" "diaspora* est un réseau social décentralisé avec lequel vous pouvez vous-" "même stocker et contrôler vos donnés personnelles." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Réseau social fédéré" @@ -1692,7 +1693,7 @@ msgstr "L’inscription d’utilisateurs est activée" msgid "User registrations disabled" msgstr "L’inscription d’utilisateurs est désactivée" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1704,7 +1705,7 @@ msgstr "" "Et ceci empêchera d’autres utilisateurs de découvrir les services proposés " "par cette {box_name}." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1722,11 +1723,11 @@ msgstr "" "d’assigner votre nom DNS à la nouvelle IP, de sorte que si quelqu’un sur " "Internet demande votre nom DNS, il obtiendra bien votre adresse IP courante." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Client DNS dynamique" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Nom de domaine dynamique" @@ -1972,7 +1973,7 @@ msgstr "Configurer le DNS Dynamique" msgid "Dynamic DNS Status" msgstr "Etat du DNS Dynamique" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1980,7 +1981,7 @@ msgstr "" "XMPP est un protocole de communication ouvert et standardisé. Vous pouvez " "lancer et configurer ici votre serveur XMPP, appelé ejabberd." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web clientutilisateur disposant d’un " "compte sur la {box_name}." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn ou " "bien configurez un serveur externe." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Serveur de discussion" @@ -2142,48 +2143,18 @@ msgstr "Serveur de courriel" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Propulsé par Postfix, Dovecot & Rspamd" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "Cet alias est déjà pris" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "La taille minimum est de 2 caractères" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "Contient des caractères interdits" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "Doit commencer par a-z ou 0-9" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "Ne peut être un nombre" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "Configuration du nom de domaine Postfix" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "Utilisateur introuvable" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Intégration de l'authentification SASL Postfix-Dovecot" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "Table d’alias Postfix" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "Table de destinataires locaux Postfix" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "Disponibilité de RoundCube" @@ -2208,16 +2179,61 @@ msgstr "Postfix utilise un certificat TLS" msgid "Has a TLS certificate" msgstr "A un certificat TLS" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Entrez un nom d’utilisateur valide." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Entrez un nom d’utilisateur valide." + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "domaine" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "Nouvel alias (sans le @domaine)" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "Contient des caractères interdits" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "Doit commencer par a-z ou 0-9" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "Ne peut être un nombre" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "My Aliases" +msgid "Aliases" +msgstr "Mes alias" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Activé" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Désactivé" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2234,161 +2250,79 @@ msgstr "K-9 Mail" msgid "FairEmail" msgstr "FairEmail" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "My Aliases" msgid "Manage Aliases" msgstr "Mes alias" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "Aucun alias de courriel configuré." -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" -msgstr "Désactiver la sélection" +#: plinth/modules/email_server/templates/email_alias.html:24 +#, fuzzy +#| msgid "Disabled" +msgid "Disable" +msgstr "Désactivé" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "Activer la sélection" +#, fuzzy +#| msgid "Enabled" +msgid "Enable" +msgstr "Activé" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "Supprimer la sélection" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "Créer un nouvel alias de courriel" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Ajouter" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "Nouvelle valeur" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Mises à jour" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "Une erreur s’est produite. Veuillez réessayer." - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "TLS Postfix" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "TLS Dovecot" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "Se rendre sur l’interface d’administration Rspamd" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "Alertes sur le service" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "Réparer" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "Vous n’avez pas de dossier personnel (« home directory »)." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "Veuillez en créer un afin de recevoir du courriel." - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "Créer un dossier personnel" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "Conserver les paramètres actuels" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "Utiliser Let’s Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "Nom commun de domaine (Common Name (CN))" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "Utiliser des valeurs personnalisées" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "Chemin du certificat" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "Chemin de la clef privée" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "Utiliser les paramètres par défaut du système" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Accueil" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "Mon courriel" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "Mes alias" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Sécurité" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "Domaines" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Gestion des instantanés" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "Alertes sur le service" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "Réparer" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "Erreur interne dans le module {0}" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "Veuillez consulter les journaux système pour plus d’information" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" -msgstr "Alias actifs" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Une erreur est survenue pendant la configuration." -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "Alias désactivés" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Paramètre inchangé" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2400,7 +2334,7 @@ msgstr "" "un pare-feu activé et correctement configuré réduit le risque des menaces " "provenant d’Internet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Pare-feu" @@ -2437,19 +2371,6 @@ msgstr "" msgid "Service/Port" msgstr "Service/Port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Activé" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Désactivé" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Permis" @@ -2536,7 +2457,7 @@ msgstr "Démarrer la configuration initiale" msgid "Setup Complete" msgstr "Configuration initiale terminée" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2555,7 +2476,7 @@ msgstr "" "en ligne de commande ou l’un des nombreux clients graphiques existants. " "Partagez ainsi votre code source avec d’autres, tout autour du monde." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2563,15 +2484,15 @@ msgstr "" "Pour en apprendre plus sur l’utilisation de Git, consultez ce tutoriel Git." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Accès aux dépôts Git en lecture et en écriture" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Hébergement Git simple" @@ -3016,7 +2937,7 @@ msgstr "À propos de la {box_name}" msgid "{box_name} Manual" msgstr "Manuel {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3028,7 +2949,7 @@ msgstr "" "fournit de l’anonymat en envoyant du trafic chiffré sur un réseau distribué " "actionné par des volontaires partout sur la planète." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3036,7 +2957,7 @@ msgstr "" "Vous trouverez plus d’informations à propos d’I2P sur le site web de leur projet." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -3044,19 +2965,19 @@ msgstr "" "L’interface web fournie vous guidera dans les étapes de configuration lors " "de votre première visite." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Gestion de l’application I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Réseau d'anonymisation" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "Serveur mandataire I2P" @@ -3102,7 +3023,7 @@ msgstr "" "un réseau de pair à pair. Téléchargez des fichiers en ajoutant des torrents " "ou en créant un nouveau torrent pour partager un fichier." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3113,7 +3034,7 @@ msgstr "" "fonctionnalités de blogue habituelles telles que les commentaires et les " "flux RSS." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3128,15 +3049,15 @@ msgstr "" "utilisateurs dans la configuration des utilisateurs." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki et blogue" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Consultation et modification des applications de wiki" @@ -3216,11 +3137,11 @@ msgstr "{title} supprimé." msgid "Could not delete {title}: {error}" msgstr "La suppression de {title} n'a pas abouti : {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted est un serveur pour Gobby, un éditeur de texte collaboratif." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3231,11 +3152,11 @@ msgstr "" "Gobby et installez-le. Lancez ensuite Gobby, sélectionnez « Connect to " "Server » et saisissez le nom de domaine de la {box_name}." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Serveur Gobby" @@ -3256,7 +3177,7 @@ msgstr "" "Lancez Gobby, sélectionnez « Connect to Server » et saisissez le nom de " "domaine de la {box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3264,11 +3185,11 @@ msgstr "" "JSXC est un client web pour XMPP. Il s’utilise typiquement avec un serveur " "XMPP tournant sur la même machine." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Client de discussion" @@ -3277,7 +3198,7 @@ msgstr "Client de discussion" msgid "JavaScript license information" msgstr "Information de licence JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3293,7 +3214,7 @@ msgstr "" "est propriétaire du domaine auprès de l’autorité de certification « Let’s " "Encrypt »." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3306,15 +3227,15 @@ msgstr "" "repository/\">conditions d’utilisation de Let’s Encrypt avant d’utiliser " "ce service." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Certificats" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "Test impossible : aucun domaine n’est configuré." @@ -3421,7 +3342,7 @@ msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" "Échec de la suppression du certificat pour le domaine {domain} : {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3439,7 +3360,7 @@ msgstr "" "un serveur Matrix donné peuvent converser avec des utilisateurs sur tous les " "autres serveurs Matrix grâce la fédération." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3449,7 +3370,7 @@ msgstr "" "Installez pour cela l’application Coturn ou " "bien configurez un serveur externe." -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3546,7 +3467,7 @@ msgstr "" "valide. Rendez-vous sur Let’s Encrypt " "pour en obtenir un." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3560,7 +3481,7 @@ msgstr "" "web de type wiki, pour prendre des notes ou pour collaborer sur des projets " "entre amis." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3575,7 +3496,7 @@ msgstr "" "vous rendant sur la page Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3583,12 +3504,12 @@ msgstr "" "Toute personne ayant le lien vers ce wiki peut le consulter. Seuls les " "utilisateurs connectés avec leur compte peuvent y apporter des modifications." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3681,7 +3602,7 @@ msgstr "Thème par défaut modifié" msgid "Server URL updated" msgstr "URL du Serveur mise à jour" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3694,11 +3615,11 @@ msgstr "" "au serveur, vous devez disposer d'un client Minetest." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Bac à sable cubique" @@ -3773,7 +3694,7 @@ msgstr "Configuration PVP mise à jour" msgid "Damage configuration updated" msgstr "Configuration des blessures mise à jour" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3791,15 +3712,15 @@ msgstr "" "portables, les smartphones, les télévisions et les systèmes de jeu (comme la " "PS3 ou la Xbox 360) ainsi que les applications telles que Totem ou Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Serveur de streaming de médias" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Serveur de médias simple" @@ -3845,7 +3766,7 @@ msgstr "Le répertoire indiqué n’existe pas." msgid "Updated media directory" msgstr "Répertoire multimédia mis à jour" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3855,7 +3776,7 @@ msgstr "" "pour s'échanger de gros fichiers. Elle peut participer à de nombreux réseaux " "de pair à pair dont eDonkey, Kademlia, Overnet, BitTorrent et DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3866,7 +3787,7 @@ msgstr "" "également l’utiliser depuis n’importe quel client sur téléphone ou " "ordinateur, ou depuis une interface telnet. Consultez le manuel." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3874,16 +3795,16 @@ msgstr "" "Sur la {box_name}, les fichiers sont téléchargés dans le répertoire /var/lib/" "mldonkey/." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Téléchargement de fichiers avec les applications eDonkey" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Partage de fichiers de pair à pair" @@ -3895,7 +3816,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3917,7 +3838,7 @@ msgstr "" "référez-vous à la documentation SSH de Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3936,7 +3857,7 @@ msgstr "" "série de logiciels comme expliqué sur le site Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4061,7 +3982,7 @@ msgstr "Clef publiée sur le serveur de clefs." msgid "Error occurred while publishing key." msgstr "Une erreur est survenue lors de la publication de la clef." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4069,7 +3990,7 @@ msgstr "" "Mumble est un logiciel de tchat vocal de haute qualité, open source, crypté " "et à faible temps de latence." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4080,11 +4001,11 @@ msgstr "" "permettant de se connecter à Mumble depuis votre ordinateur ou votre " "appareil Android." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Tchat vocal" @@ -4143,7 +4064,7 @@ msgstr "Toutes les applications web" msgid "Services" msgstr "Services" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4152,7 +4073,7 @@ msgstr "" "le Wi-Fi ou le protocole PPPoE. Partage de cette connexion avec d’autres " "appareils du réseau local." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4160,11 +4081,11 @@ msgstr "" "Les périphériques gérés par d’autres méthodes pourraient ne pas être " "disponibles pour être configurés ici." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Réseau" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilise DNSSEC sur IPv{kind}" @@ -4738,6 +4659,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Cette connexion n'est pas active." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Sécurité" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5231,7 +5157,7 @@ msgstr "générique" msgid "TUN or TAP interface" msgstr "Interface TUN ou TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5324,7 +5250,7 @@ msgstr "Connexion {name} supprimée." msgid "Failed to delete connection: Connection not found." msgstr "Échec de suppression de la connexion : connexion introuvable." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5342,20 +5268,20 @@ msgstr "" "d’accéder au reste d’Internet au travers de la {box_name} pour une sécurité " "et un anonymat accrus." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Connexion aux services VPN" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Réseau privé virtuel" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5444,7 +5370,7 @@ msgstr "" msgid "Download my profile" msgstr "Télécharger mon profil" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5458,18 +5384,18 @@ msgstr "" "reste de l'Internet. Cela se produit en général dans les situations " "suivantes :" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "La {box_name} est derrière un pare-feu restrictif." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "La {box_name} est connectée à un réseau (sans fil) que vous ne contrôlez pas." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5477,7 +5403,7 @@ msgstr "" "Votre FAI ne vous fournit pas d’adresse IP externe, mais une connexion " "Internet via une translation d’adresse réseau (NAT)." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5485,11 +5411,11 @@ msgstr "" "Votre FAI ne vous fournit pas une adresse IP statique, elle change à chaque " "fois que vous vous connectez à Internet." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Votre FAI limite les connexions entrantes." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5505,15 +5431,15 @@ msgstr "" "a>. Il se pourrait que dans le futur, l’utilisation de la {box_name} d’un " "ami pour cela soit également proposée." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Visibilité publique" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "Domaine PageKite" @@ -5657,12 +5583,12 @@ msgstr "" "Regardez comment configurer un client SSH sur le wiki PageKite (en anglais)" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Performance" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5673,7 +5599,7 @@ msgstr "" "des tendances d’utilisation et vérifier si la machine est surchargée par " "certains utilisateurs ou certains services." -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5681,7 +5607,7 @@ msgstr "" "Les métriques de performance sont collectées par le Co-Pilote " "« Performance » et visualisables dans l’appli Cockpit." -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Surveillance du système" @@ -5752,7 +5678,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Éteindre immédiatement" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5764,7 +5690,7 @@ msgstr "" "accès et de retirer les publicités et autres éléments nuisibles de " "l’Internet. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5780,20 +5706,20 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ ou http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Serveur mandataire web" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accéder à l'URL {url} avec le mandataire {proxy} sur tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5811,7 +5737,7 @@ msgstr "" "ordinateur ou sur mobile peuvent ensuite se connecter ou se déconnecter du " "« cœur »." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile sont disponibles pour " "téléchargement." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "Client IRC" @@ -5836,7 +5762,7 @@ msgstr "Client IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5853,7 +5779,7 @@ msgstr "" "cliente compatible. Tous les utilisateur disposant d’un compte sur la " "{box_name} ont accès à Radicale." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5864,12 +5790,12 @@ msgstr "" "charge l’ajout d’événements ou de contacts, opérations qui doivent être " "réalisées avec un client dédié." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Agenda et carnet d’adresses" @@ -5953,7 +5879,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuration des droits d’accès mise à jour" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5967,7 +5893,7 @@ msgstr "" "carnet d’adresses, une gestion des dossiers, un outil de recherche dans les " "messages et un correcteur orthographique." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5982,7 +5908,7 @@ msgstr "" "(recommandé), remplissez le champ serveur avec une adresse du type " "imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5998,11 +5924,11 @@ msgstr "" "settings/security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "Client de courriel" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -6010,7 +5936,7 @@ msgstr "" "Samba permet de partager des fichiers et des répertoires entre la FreedomBox " "et d’autres machines de votre réseau local." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -6024,11 +5950,11 @@ msgstr "" "smb://{hostname}.local (sur Linux et Mac). Vous pourrez choisir parmi trois " "types de partages : " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Partage ouvert : accessible par tout le monde dans votre réseau local." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -6036,7 +5962,7 @@ msgstr "" "Partage de groupe : accessible uniquement aux utilisateurs de la FreedomBox " "qui sont membres du groupe freedombox-share." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -6044,15 +5970,15 @@ msgstr "" "Partage de dossier personnel : chaque utilisateur du groupe freedombox-share " "a son propre espace privé." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Accès aux partages privés" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Stockage de fichiers réseau" @@ -6171,7 +6097,7 @@ msgstr "Partage désactivé." msgid "Error disabling share: {error_message}" msgstr "Erreur lors de la désactivation du partage : {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6180,7 +6106,7 @@ msgstr "" "privée. Il rassemble et affiche les résultats de plusieurs moteurs de " "recherche." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6188,15 +6114,15 @@ msgstr "" "Searx peut être utilisé pour éviter le pistage et le profilage fait par les " "moteurs de recherche. Par défaut il ne stocke aucun cookie." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Recherches sur le Web" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Recherche web" @@ -6384,11 +6310,11 @@ msgstr "Erreur lors de la mise en place de l’accès restreint : {exception}" msgid "Updated security configuration" msgstr "Configuration de sécurité mise à jour" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli permet de sauvegarder et de partager vos signets." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6396,15 +6322,15 @@ msgstr "" "Notez que Shaarli ne sait gérer qu’un unique compte utilisateur, que vous " "devrez configurer lors de votre première visite." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Signets" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6414,7 +6340,7 @@ msgstr "" "votre trafic Internet. Il peut être utilisé pour contourner les problèmes de " "filtrage ou de censure d’Internet." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6428,7 +6354,7 @@ msgstr "" "mandataire, et leurs flux de données seront chiffrés et transmis vers " "l’extérieur au travers du serveur Shadowsocks." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6437,11 +6363,11 @@ msgstr "" "l’URL de mandataire SOCKS5 sur votre appareil, navigateur ou application " "avec l’URL http://adresse_freedombox:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Mandataire Socks5" @@ -6583,7 +6509,7 @@ msgstr "Modifier le partage" msgid "Share deleted." msgstr "Partage supprimé." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6594,7 +6520,7 @@ msgstr "" "utilisés pour ramener le système à un état précédent connu pour être " "fonctionnel, dans le cas ou des changements non désirés ont été appliqués." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6606,7 +6532,7 @@ msgstr "" "instantanés plus anciens seront supprimés automatiquement en fonction du " "paramétrage qui suit." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for sauvegardes car ils sont forcément conservés sur la même partition. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Instantanés de disque" @@ -6824,7 +6750,7 @@ msgstr "Le système doit être redémarré pour terminer le retour en arrière." msgid "Rollback to Snapshot" msgstr "Revenir à l'instantané" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6836,7 +6762,7 @@ msgstr "" "effectuer des tâches d'administration, copier des fichiers ou bien faire " "fonctionner d’autres services en utilisant de telles connexions." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Serveur Secure Shell (SSH)" @@ -6882,7 +6808,7 @@ msgstr "Authentification SSH par mot de passe désactivée." msgid "SSH authentication with password enabled." msgstr "Authentification SSH par mot de passe activée." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Authentification unique" @@ -6890,7 +6816,7 @@ msgstr "Authentification unique" msgid "Login" msgstr "S’identifier" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6902,109 +6828,109 @@ msgstr "" "d’utilisation, monter et démonter des médias amovibles, étendre la partition " "racine, etc." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Stockage" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} octets" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} Kio" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Mio" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Gio" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Tio" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "L'opération a échoué." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "L'opération a été annulée." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Le périphérique est déjà en train d’être démonté." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "L’opération n’est pas disponible par manque d’un pilote ou d’un outil adapté." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "L'opération ne s'est pas terminée." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "L'opération devrait réveiller un disque qui se trouve dans un état " "d'endormissement profond." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Tentative de démontage d’un périphérique en cours d’utilisation." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "L'opération a déjà été annulée." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Vous n'êtes pas autorisé à effectuer l'opération demandée." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Le périphérique est déjà monté." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Le périphérique n’est pas monté." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Vous n'êtes pas autorisé à utiliser l'option demandée." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Le périphérique est monté par un autre utilisateur." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Espace disque faible sur la partition système : {percent_used}% utilisés, " "{free_space} libres." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Espace disque faible" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Erreur disque imminente" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7130,7 +7056,7 @@ msgstr "Le périphérique peut être débranché en toute sécurité." msgid "Error ejecting device: {error_message}" msgstr "Erreur lors de l’éjection du périphérique : {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7143,7 +7069,7 @@ msgstr "" "seront automatiquement répliquées aux autres appareils qui utilisent " "Syncthing." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7163,20 +7089,20 @@ msgstr "" "accessible uniquement aux utilisateurs membres des groupes « admin » ou " "« syncthing-access »." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Administration de l’application Syncthing" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Synchronisation de fichiers" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7190,7 +7116,7 @@ msgstr "" "indisponibles, vos fichiers pourront être récupérés depuis les nœuds " "restants." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7201,11 +7127,11 @@ msgstr "" "Des introducteurs supplémentaires peuvent être ajoutés, afin de faire " "découvrir ce nœud aux autres nœuds de stockage." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Stockage de fichiers distribué" @@ -7245,7 +7171,7 @@ msgstr "Introducteurs connectés" msgid "Remove" msgstr "Supprimer" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7259,40 +7185,40 @@ msgstr "" "recommande l’utilisation du Navigateur Tor." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Service onion Tor" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Mandataire Socks Tor" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Relais Tor de type pont (« bridge relay »)" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Le port du relais Tor est disponible" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Abonné au transport obfs3" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Abonné au transport obfs4" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Accédez à l'URL {url} sur tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmez l'utilisation de Tor pour {url} sur tcp{kind}" @@ -7446,16 +7372,12 @@ msgstr "" "Un port SOCKS pour Tor est accessible sur votre %(box_name)s sur le port TCP " "9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Paramètre inchangé" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission est un client BitTorrent avec une interface utilisateur web." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7463,16 +7385,16 @@ msgstr "" "BitTorrent est un protocole de partage de fichiers de pair à pair. Notez que " "l’utilisation de BitTorrent n’est pas anonyme." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "Veuillez ne pas changer le port par défaut du démon de Transmission." -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7483,7 +7405,7 @@ msgstr "" "n’importe quel appareil tout en restant au plus près du design d’une " "application de bureau complète." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any utilisateur disposant d’un compte sur la {box_name}." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7501,15 +7423,15 @@ msgstr "" "ordinateur, saisissez l’URL tt-rss-app pour " "vous connecter." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Lecture et abonnement à des flux d’actualités" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Lecteur de flux d'informations" @@ -7517,14 +7439,14 @@ msgstr "Lecteur de flux d'informations" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Rechercher et installer les dernières mises à jour logicielles et les " "correctifs de sécurité." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7538,19 +7460,26 @@ msgstr "" "nécessaire, il est effectué à 2h00, rendant indisponible l’ensemble des " "applications pour une courte période." -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Mises à jour" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Mises à jour" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox mise à jour" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "Impossible de lancer la mise à niveau de la distribution" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " @@ -7561,11 +7490,11 @@ msgstr "" "sont disponibles. Si activée, la mise à niveau automatique de la " "distribution sera retentée dans 24H." -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "Mise à niveau de la distribution démarrée" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7765,7 +7694,7 @@ msgstr "Le lancement de la mise à niveau a échoué." msgid "Frequent feature updates activated." msgstr "Mise à jour régulière des fonctionnalités activée." -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7776,7 +7705,7 @@ msgstr "" "Certaines applis nécessitent également qu’un compte fasse partie d’un groupe " "spécifique pour que l’utilisateur puisse accéder à l'application." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7788,15 +7717,15 @@ msgstr "" "principale. En revanche, seuls les utilisateurs membres du groupe admin peuvent modifier les applications ou changer les paramètres système." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Utilisateurs et groupes" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Accès à tous les services et à la configuration du système" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Vérification de l’entrée LDAP « {search_item} »" @@ -8049,11 +7978,11 @@ msgstr "Changer Mot de Passe" msgid "Password changed successfully." msgstr "Le mot de passe a été changé." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard est un tunnel VPN rapide, moderne et sécurisé." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -8063,7 +7992,7 @@ msgstr "" "virtuel VPN proposant un service WireGuard, pour router tout le trafic " "sortant de la {box_name} à travers ce VPN." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8388,7 +8317,7 @@ msgstr "Supprimer la connexion à un serveur" msgid "Server deleted." msgstr "Serveur supprimé." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8403,7 +8332,7 @@ msgstr "" "thèmes. L’interface d’administration et les pages Web produites sont " "compatibles avec les appareils mobiles." -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8418,7 +8347,7 @@ msgstr "" "l’interface d’administration pour améliorer les URL de vos pages et de vos " "billets de blogue." -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " @@ -8429,7 +8358,7 @@ msgstr "" "href=\"/wordpress/wp-admin/\">page d’administration à vos favoris pour y " "accéder ultérieurement." -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " @@ -8440,12 +8369,12 @@ msgstr "" "la mise à jour de modules additionnels et de thèmes se fait à vos risques et " "périls." -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "Site web et blogue" @@ -8463,7 +8392,7 @@ msgstr "" "WordPress. N’activez cette option qu’après avoir réalisé la configuration " "initiale de WordPress." -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8486,7 +8415,7 @@ msgstr "" "recherche, de carte et de calendrier. Les photos peuvent être partagées " "unitairement avec d’autres en leur envoyant un lien direct." -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8497,11 +8426,11 @@ msgstr "" "l’administrateur Zoph. Pour ajouter des utilisateurs ceux-ci doivent être " "créés à la fois sur la {box_name} et dans Zoph avec le même identifiant." -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Photothèque" @@ -8540,23 +8469,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Générique" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Erreur pendant l’installation" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "installation en cours" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "téléchargement en cours" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "changement de support" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "fichier de configuration : {file}" @@ -8627,6 +8556,10 @@ msgstr "Fonctions de base et interface web de la %(box_name)s" msgid " Home" msgstr " Accueil" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Accueil" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Applis" @@ -8932,6 +8865,81 @@ msgstr "%(percentage)s%% effectué" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "The alias was taken" +#~ msgstr "Cet alias est déjà pris" + +#~ msgid "Must be at least 2 characters long" +#~ msgstr "La taille minimum est de 2 caractères" + +#~ msgid "User does not exist" +#~ msgstr "Utilisateur introuvable" + +#~ msgid "Postfix local recipient maps" +#~ msgstr "Table de destinataires locaux Postfix" + +#~ msgid "Disable selected" +#~ msgstr "Désactiver la sélection" + +#~ msgid "Enable selected" +#~ msgstr "Activer la sélection" + +#~ msgid "Delete selected" +#~ msgstr "Supprimer la sélection" + +#~ msgid "New value" +#~ msgstr "Nouvelle valeur" + +#~ msgid "There was a problem with your request. Please try again." +#~ msgstr "Une erreur s’est produite. Veuillez réessayer." + +#~ msgid "Postfix TLS" +#~ msgstr "TLS Postfix" + +#~ msgid "Dovecot TLS" +#~ msgstr "TLS Dovecot" + +#~ msgid "Visit Rspamd administration interface" +#~ msgstr "Se rendre sur l’interface d’administration Rspamd" + +#~ msgid "You do not have a home directory." +#~ msgstr "Vous n’avez pas de dossier personnel (« home directory »)." + +#~ msgid "Create one to begin receiving emails." +#~ msgstr "Veuillez en créer un afin de recevoir du courriel." + +#~ msgid "Create home directory" +#~ msgstr "Créer un dossier personnel" + +#~ msgid "Keep current settings" +#~ msgstr "Conserver les paramètres actuels" + +#~ msgid "Use Let's Encrypt" +#~ msgstr "Utiliser Let’s Encrypt" + +#~ msgid "Common name" +#~ msgstr "Nom commun de domaine (Common Name (CN))" + +#~ msgid "Use custom values" +#~ msgstr "Utiliser des valeurs personnalisées" + +#~ msgid "Certificate path" +#~ msgstr "Chemin du certificat" + +#~ msgid "Private key path" +#~ msgstr "Chemin de la clef privée" + +#~ msgid "Use system default" +#~ msgstr "Utiliser les paramètres par défaut du système" + +#~ msgid "My Mail" +#~ msgstr "Mon courriel" + +#~ msgid "Enabled aliases" +#~ msgstr "Alias actifs" + +#~ msgid "Disabled aliases" +#~ msgstr "Alias désactivés" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Impossible de supprimer le seul administrateur de ce système." diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index ab78235c4..22163a516 100644 --- a/plinth/locale/gl/LC_MESSAGES/django.po +++ b/plinth/locale/gl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Galician calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1038,7 +1039,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1047,7 +1048,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1055,25 +1056,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1218,7 +1219,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1226,7 +1227,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1872,48 +1873,18 @@ msgstr "Servidor web" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1938,16 +1909,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1964,161 +1974,71 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "Descubrimento de servizo" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2126,7 +2046,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2158,19 +2078,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2246,7 +2153,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2257,21 +2164,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2634,7 +2541,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2642,31 +2549,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2703,14 +2610,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2719,15 +2626,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2804,11 +2711,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2816,11 +2723,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2839,17 +2746,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2858,7 +2765,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2868,7 +2775,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2876,15 +2783,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2985,7 +2892,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2995,14 +2902,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3073,7 +2980,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3081,7 +2988,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3090,18 +2997,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3185,7 +3092,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3194,11 +3101,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3264,7 +3171,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3275,15 +3182,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3323,36 +3230,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3364,7 +3271,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3376,7 +3283,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3387,7 +3294,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3509,24 +3416,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3579,23 +3486,23 @@ msgstr "" msgid "Services" msgstr "Descubrimento de servizo" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4075,6 +3982,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4514,7 +4426,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4603,7 +4515,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4614,20 +4526,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4691,7 +4603,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4700,33 +4612,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4735,15 +4647,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4877,25 +4789,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4956,14 +4868,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4973,20 +4885,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4997,7 +4909,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5017,7 +4929,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5027,19 +4939,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5106,7 +5018,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5114,7 +5026,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5123,7 +5035,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5133,17 +5045,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5152,31 +5064,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5288,27 +5200,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "Produciuse un erro ao instalar o aplicativo: {error}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5463,32 +5375,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5497,17 +5409,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5636,14 +5548,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5651,14 +5563,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5850,7 +5762,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5858,7 +5770,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5899,7 +5811,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5907,7 +5819,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5915,104 +5827,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6126,7 +6038,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6134,7 +6046,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6146,20 +6058,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6167,7 +6079,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6175,11 +6087,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6214,7 +6126,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6223,40 +6135,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6382,58 +6294,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6441,12 +6349,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6454,34 +6362,41 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Manual" msgid "Updates" msgstr "Manual" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" msgstr "FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6651,14 +6566,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6666,15 +6581,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6900,18 +6815,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7207,7 +7122,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7216,7 +7131,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7225,26 +7140,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7258,7 +7173,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7271,7 +7186,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7279,11 +7194,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7317,23 +7232,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7394,6 +7309,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index c1a36564a..98e30abeb 100644 --- a/plinth/locale/gu/LC_MESSAGES/django.po +++ b/plinth/locale/gu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Gujarati calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1096,7 +1097,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1108,7 +1109,7 @@ msgstr "" "બનાવે છે. {box_name} પર, નિયંત્રણો ઘણા અદ્યતન વિધેયો માટે ઉપલબ્ધ છે જે સામાન્ય રીતે " "આવશ્યક નથી. કન્સોલ કામગીરી માટે વેબ આધારિત ટર્મિનલ પણ ઉપલબ્ધ છે." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1116,7 +1117,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, fuzzy, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1127,18 +1128,18 @@ msgstr "" "સાથે{box_name} લૉગિન દ્વારા ઍક્સેસ કરી શકાય છે. સંવેદનશીલ માહિતી અને વ્યવસ્થાપનની " "ક્ષમતાઓ એડમિન ગ્રૂપના વપરાશકર્તાઓ માટે મર્યાદિત છે." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "કોકપિટ" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "સર્વર સંચાલન" @@ -1294,7 +1295,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1302,7 +1303,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as થી ઉપલબ્ધ થશે. તેનો પહેલાથી નક્કી પાસવર્ડ 'deluge' છે, પરંતુ આ સેવા સક્રિય " "કાર્ય બાદ તુરંત જ આપે લોગ ઇન કરી ને તેને બદલી નાખવો જોઈએ." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "BitTorrent કાર્યક્રમોનો ઉપયોગ કરીને ફાઇલો ડાઉનલોડ કરો" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "અનરાધાર" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "બીટ ટોરેન્ટ વેબ ક્લાયન્ટ" @@ -1438,18 +1439,18 @@ msgid "Diagnostics" msgstr "તપાસ" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "" @@ -1536,7 +1537,7 @@ msgstr "પરિણામ" msgid "Diagnostic Test" msgstr "તપાસકીય પરિક્ષણ" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1544,12 +1545,12 @@ msgstr "" "પ્રવાસી* એક વિકેન્દ્રિત સામાજીક નેટવર્ક છે જ્યાં આપ આપની માહિતીનો સંગ્રહ અને નિયોજન કરી " "શકો છો." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "પ્રવાસી*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "સંઘબદ્ધિત સામાજીક નેટવર્ક" @@ -1608,7 +1609,7 @@ msgstr "વપરાશકર્તા રજીસ્ટ્રેશન સક msgid "User registrations disabled" msgstr "વપરાશકર્તા રજીસ્ટ્રેશન અક્ષમ છે" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, fuzzy, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1619,7 +1620,7 @@ msgstr "" "અન્ય લોકો માટે તમને ઇન્ટરનેટ પર શોધવા માટે મુશ્કેલ હોઈ શકે છે. આ અન્ય લોકો જે આ દ્વારા " "પ્રદાન કરવામાં આવે છે તે સેવાઓ શોધવાનું અટકાવશે {box_name}" -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1636,11 +1637,11 @@ msgstr "" "પર સોંપી દેશે, અને જો ઇન્ટરનેટમાંથી કોઈ વ્યક્તિ તમારા DNS નામ માટે પૂછે, તેઓને તમારા " "વર્તમાન IP સરનામા સાથે પ્રતિસાદ મળશે." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "ડાયનેમિક DNS ક્લાયન્ટ" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 #, fuzzy #| msgid "Domain Name" msgid "Dynamic Domain Name" @@ -1873,7 +1874,7 @@ msgstr "ડાયનેમિક DNS રૂપરેખાંકિત કરો msgid "Dynamic DNS Status" msgstr "ડાયનેમિક DNS સ્થિતિ" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1881,7 +1882,7 @@ msgstr "" "XMPP એક ખુલ્લું અને પ્રમાણિત સંચાર પ્રોટોકોલ છે. અહીં તમે તમારા XMPP સર્વરને ચલાવો અને " "ગોઠવી શકો છો, જેને ઈઝબેબર્ડે કહેવાય છે." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the XMPP ક્લાયન્ટ. જ્યારે સક્ષમ કરેલ હોય, ઈઝબેબર્ડ ઍક્સેસ કરી શકાય છે " "કોઇપણ દ્વારા વપરાશકર્તાઓ સાથે{box_name}પ્રવેશ." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ઈઝબેબર્ડ" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "ચેટ સર્વર" @@ -2042,50 +2043,20 @@ msgstr "ચેટ સર્વર" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "ક્ષેત્રીય નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -2112,16 +2083,61 @@ msgstr "" msgid "Has a TLS certificate" msgstr "બધા SSL પ્રમાણપત્રો સ્વીકારો" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "અમાન્ય સર્વર નામ" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "અમાન્ય સર્વર નામ" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Documentation" +msgid "Aliases" +msgstr "દસ્તાવેજીકરણ" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "સક્ષમ કરેલું" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "અક્ષમ કરેલું" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2138,179 +2154,81 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Documentation" msgid "Manage Aliases" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "અક્ષમ કરેલું" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy #| msgid "Enabled" -msgid "Enable selected" +msgid "Enable" msgstr "સક્ષમ કરેલું" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Documentation" +msgid "Manage Spam" +msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "સેવા પ્રકાર" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Documentation" -msgid "Create home directory" -msgstr "દસ્તાવેજીકરણ" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "વર્તમાન સ્થિતિ:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "ક્ષેત્રીય નામ સ્થાપિત કર્યું" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Documentation" -msgid "Private key path" -msgstr "દસ્તાવેજીકરણ" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enabled" -msgid "Enabled aliases" -msgstr "સક્ષમ કરેલું" +#| msgid "General Configuration" +msgid "Error updating configuration" +msgstr "સામાન્ય ગોઠવણી" -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "અક્ષમ કરેલું" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "સેટિંગ યથાવત" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2321,7 +2239,7 @@ msgstr "" "છે {box_name}. ફાયરવૉલ સક્ષમ અને યોગ્ય રીતે રૂપરેખાંકિત રાખીને ઇન્ટરનેટથી સુરક્ષાના ભયને " "ઘટાડે છે." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "ફાયરવોલ" @@ -2357,19 +2275,6 @@ msgstr "" msgid "Service/Port" msgstr "સેવા/પોર્ટ" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "સક્ષમ કરેલું" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "અક્ષમ કરેલું" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "પરવાનગી છે" @@ -2449,7 +2354,7 @@ msgstr "સેટઅપ પ્રારંભ કરો" msgid "Setup Complete" msgstr "સેટઅપ પૂર્ણ" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2460,21 +2365,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2855,7 +2760,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2863,33 +2768,33 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "એપ્લીકેશનને પ્રસ્થાપિત કરો" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2926,14 +2831,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2942,15 +2847,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -3027,11 +2932,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3039,11 +2944,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -3062,17 +2967,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -3081,7 +2986,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3091,7 +2996,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3099,15 +3004,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3208,7 +3113,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3218,14 +3123,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3298,7 +3203,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3306,7 +3211,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3315,18 +3220,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3422,7 +3327,7 @@ msgstr "સેટિંગ યથાવત" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3431,11 +3336,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3501,7 +3406,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3512,15 +3417,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3560,38 +3465,38 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" msgstr "BitTorrent કાર્યક્રમોનો ઉપયોગ કરીને ફાઇલો ડાઉનલોડ કરો" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3603,7 +3508,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3615,7 +3520,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3626,7 +3531,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3748,24 +3653,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3820,23 +3725,23 @@ msgstr "" msgid "Services" msgstr "સેવા પ્રકાર" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4319,6 +4224,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4773,7 +4683,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4862,7 +4772,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4873,22 +4783,22 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Conversations" msgid "Connect to VPN services" msgstr "વાતચીત" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4952,7 +4862,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4961,33 +4871,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4996,15 +4906,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -5138,25 +5048,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" @@ -5219,14 +5129,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5236,20 +5146,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5260,7 +5170,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5280,7 +5190,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5290,19 +5200,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5369,7 +5279,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5377,7 +5287,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5386,7 +5296,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5396,17 +5306,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5415,31 +5325,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5553,27 +5463,27 @@ msgstr "એપ્લિકેશન અક્ષમ છે" msgid "Error disabling share: {error_message}" msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5728,32 +5638,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5762,17 +5672,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5901,14 +5811,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5916,14 +5826,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -6116,7 +6026,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6124,7 +6034,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6169,7 +6079,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6177,7 +6087,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6185,104 +6095,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6398,7 +6308,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6406,7 +6316,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6418,20 +6328,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6439,7 +6349,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6447,11 +6357,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6486,7 +6396,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6495,40 +6405,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6656,37 +6566,33 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "સેટિંગ યથાવત" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission બીટ ટોરેન્ટ ક્લાયન્ટ છે જે વેબ UI ધરાવે છે." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, fuzzy, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6719,12 +6625,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6732,36 +6638,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update URL" msgid "Updates" msgstr "URL અપડેટ કરો" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" msgstr "ફ્રિડમબોક્ષ" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "User registrations disabled" msgid "Distribution update started" msgstr "વપરાશકર્તા રજીસ્ટ્રેશન અક્ષમ છે" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6939,14 +6852,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6954,15 +6867,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7192,18 +7105,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7521,7 +7434,7 @@ msgstr "ઇન્ટરનેટ સાથે સીધો જોડાણ." msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7530,7 +7443,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7539,26 +7452,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7572,7 +7485,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7585,7 +7498,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7593,11 +7506,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7633,23 +7546,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7710,6 +7623,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 #, fuzzy #| msgid "BitTorrent Web Client" @@ -7997,6 +7914,46 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "અક્ષમ કરેલું" + +#, fuzzy +#~| msgid "Enabled" +#~ msgid "Enable selected" +#~ msgstr "સક્ષમ કરેલું" + +#, fuzzy +#~| msgid "Documentation" +#~ msgid "Create home directory" +#~ msgstr "દસ્તાવેજીકરણ" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "વર્તમાન સ્થિતિ:" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "ક્ષેત્રીય નામ સ્થાપિત કર્યું" + +#, fuzzy +#~| msgid "Documentation" +#~ msgid "Private key path" +#~ msgstr "દસ્તાવેજીકરણ" + +#, fuzzy +#~| msgid "Enabled" +#~ msgid "Enabled aliases" +#~ msgstr "સક્ષમ કરેલું" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "અક્ષમ કરેલું" + #~ msgid "Message Archive Management enabled" #~ msgstr "સંદેશ આર્કાઇવ મેનેજમેંટ સક્ષમ કરો" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index c4fe3fcdf..7c565db1e 100644 --- a/plinth/locale/hi/LC_MESSAGES/django.po +++ b/plinth/locale/hi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Hindi calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1164,7 +1165,7 @@ msgstr "{name} हटा गया है." msgid "Could not delete {name}: {error}" msgstr "{name} नहीं हटा गया है: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1176,7 +1177,7 @@ msgstr "" "प्रशासित कर सकते है. {box_name} पर बहुत उन्नत फ़ंक्शन के नियंत्रण है लेकिन यह सब आमताैर पर " "ज़रूरत नहीं है. कंट्रोल संचालन के लिये वेब आधारित कंसोल भी माैजूद है." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1184,7 +1185,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -1200,18 +1201,18 @@ msgstr "" "माैजूद होते है. यह कोई से एक {box_name} के सात पहुंच " "सकते हैं. निजी जानकारी आैर सिस्टम बदलने का योग्यता सिर्फ व्यवस्थापक लोग के पास है." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "कॉकपिट" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "सर्वर एडमिनिस्ट्रेशन" @@ -1383,7 +1384,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1391,7 +1392,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web " @@ -1993,19 +1994,19 @@ msgstr "" "ग्राहक. सक्षम होने पर एजाबेरड कोई यूसर एक {box_name} " "लोगिन से उपयोग कर सकते हैं." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "एजाबेरड" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "चाट सर्वर" @@ -2131,50 +2132,20 @@ msgstr "चाट सर्वर" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "{exception}: डोमेन नाम सेट करने में एरर" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Available Domains" @@ -2203,18 +2174,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "कोई प्रमाणपत्र नहीं" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "सर्वर नाम अमान्य है" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "सर्वर नाम अमान्य है" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "डोमेन" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Create User" +msgid "Aliases" +msgstr "यूसर बनाये" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "सक्षम किया गया है" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "अक्षम किया गया है" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "राउंडक्यूब" @@ -2233,191 +2249,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Create User" msgid "Manage Aliases" msgstr "यूसर बनाये" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "अक्षम किया गया है" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "केबल कनेक्ट हो गया" +#| msgid "Enabled" +msgid "Enable" +msgstr "सक्षम किया गया है" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete all the snapshots" -msgid "Delete selected" -msgstr "सब स्नैपशॉटस हटाएँ" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create Account" msgid "Create a new email alias" msgstr "अकाउंट बनाएँ" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "जोड़ें" -#: plinth/modules/email_server/templates/email_domains.html:19 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "डोमेन्स" + +#: plinth/modules/email_server/templates/email_server.html:19 #, fuzzy -#| msgid "Backups" -msgid "New value" -msgstr "बैकअप" +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "स्नैपशॉटस प्रबंधित करें" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "अपडेट" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "सेवा टाइप" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Download directory" -msgid "You do not have a home directory." -msgstr "डायरेक्टरी डाउनलोड करें" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create User" -msgid "Create home directory" -msgstr "यूसर बनाये" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "वर्तमान स्थिति:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "लेटस एंक्रिप्ट" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "डोमेन नाम सेट हो गया है" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "प्रमाणपत्र स्थिति" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create User" -msgid "Private key path" -msgstr "यूसर बनाये" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "होम" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "सुरक्षा" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "डोमेन्स" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "क्षति को सक्षम करें" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "अक्षम किया गया है" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "सेटिंग स्थिर है" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2428,7 +2336,7 @@ msgstr "" "को नियंत्रित करता है. फ़ायरवॉल सक्षम और ठीक से कॉंफ़िगर रखते हुए इंटरनेट से सुरक्षा खतरे का " "जोखिम कम कर देता है." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "फ़ायरवॉल" @@ -2466,19 +2374,6 @@ msgstr "" msgid "Service/Port" msgstr "सर्विस/पोर्ट" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "सक्षम किया गया है" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "अक्षम किया गया है" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "अनुमति दिया गया है" @@ -2563,7 +2458,7 @@ msgstr "सटअप शुरु करें" msgid "Setup Complete" msgstr "सेटअप पूरा हो गया" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2574,21 +2469,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -3021,7 +2916,7 @@ msgstr "{box_name} के बारे में" msgid "{box_name} Manual" msgstr "{box_name} मैनुअल" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3029,7 +2924,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "एप्लिकेशन सक्षम करें" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "गुमनामी नेटवर्क" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -3100,7 +2995,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -3118,7 +3013,7 @@ msgstr "" "होने पर, ब्लॉग्स और विकि /इकिविकि/ (एक बार बनाए गए) पर " "उपलब्ध होंगे." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3131,15 +3026,15 @@ msgstr "" "विकी संपादितकर सकते है. वह युज़र कॉन्फ़िगरेशन पर " "आपको यह अनुमति बदल सकता और नया युज़रसॅ को जोडं सकता है." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "इकिविकि" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "विकि और ब्लॉग" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "विकी एप्लिकेशन को देखें और संपादित करें" @@ -3220,11 +3115,11 @@ msgstr "{name} हटा गया है." msgid "Could not delete {title}: {error}" msgstr "{name} नहीं हटा गया है: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "इन्फिनोटेड़ गोबी के एक सर्वर है, एक सहयोगी टेक्स्ट संपादक." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3235,11 +3130,11 @@ msgstr "" "डाउनलोड और इंस्टॉल करें. फिर गोबी शुरु करें, \"सर्वर से कनेक्ट\" चुनें और {box_name} " "कर डोमेन नाम दर्ज करें." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "इन्फिनोटेड़" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "गोबी सर्वर" @@ -3258,7 +3153,7 @@ msgid "" "domain name." msgstr "गोबी शुरू करें और \"सर्वर से कनेक्ट\" चुनिये और {box_name} का डोमेन नाम दर्ज करें." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3266,11 +3161,11 @@ msgstr "" "जेएसएक्ससि, एक्सएमपिपि को एक वेब क्लाइंट है. अाम तौर पर यह एक्सएमपिपि के सात उपयोग " "किया जाता है." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "जेएसएक्ससि" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "चैट क्लाइंट" @@ -3279,7 +3174,7 @@ msgstr "चैट क्लाइंट" msgid "JavaScript license information" msgstr "जावास्क्रिप्ट लाइसेंस जानकारी" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3293,7 +3188,7 @@ msgstr "" "प्रमाणपत्र सेटअप प्राप्त कर सकता है. {box_name} यह लेटस एंक्रिप्ट का डोमेन का एकमात्र " "मालिक सताबित करके एेसा करता है." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3305,15 +3200,15 @@ msgstr "" "\"https://letsencrypt.org/repository/\"> लेटस एंक्रिप्ट ग्राहक समझौते इस " "सिरविस उपयोग करने से पहले." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "लेटस एंक्रिप्ट" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "प्रमाण पत्र" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3421,7 +3316,7 @@ msgstr "डोमेन के लिए प्रमाणपत्र का msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "डोमेन के लिए प्रमाणपत्र नहीं हटाया गया {domain}:{error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3436,14 +3331,14 @@ msgstr "" "मल्टीपल डिवाइस सिंक्रनाइज़इज़ाशिन और काम करने के लिए फोन नंबर की ज़रुरत नहीं है. मैट्रिक्स " "सर्वर पर यूसरसॅ सारे मैट्रिक्स सर्वर के लेग से बात कर सकते है फ़ेडरेशिन उपयोग कर." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "मैट्रिक्स सिनापसॅ" @@ -3529,7 +3424,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3541,7 +3436,7 @@ msgstr "" "से-तरह वेबसाइट होस्ट करने के लिये, नोट्स लेने के लिये या दोस्तों के साथ प्रोजेक्ट्स पर कास कर " "सकते है." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3554,7 +3449,7 @@ msgstr "" "उपयोग करके. फिर और यूसर अकाउंट मीडियाविकी खुद ही से बना सकते है यहां जा कर Special:CreateAccountपेज." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3562,12 +3457,12 @@ msgstr "" "किसी के साथ लिंक है, वह इस विकी पढ़ सकते हैं. सिर्फ लॉगइन किए गए यूसरसॅ ही सामग्री में " "परिवर्तन कर सकते हैं." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "मीडियाविकी" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "विकी" @@ -3661,7 +3556,7 @@ msgstr "सेटिंग स्थिर है" msgid "Server URL updated" msgstr "शेयर हटाया गया." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3673,11 +3568,11 @@ msgstr "" "{box_name} पर चल सकवाते है, डिफ़ॉल्ट पोर्ट (३००००) पर. सर्वर से कनेक्ट करने के लिए, एक " "मैइनटेस्ट क्लायंटकी आवश्यकता है." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "मैइनटेस्ट" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "ब्लॉक सेंडबोक्स" @@ -3745,7 +3640,7 @@ msgstr "पिवीपि कॉन्फ़िगरेशन अपडेट msgid "Damage configuration updated" msgstr "क्षति कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3756,15 +3651,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3804,40 +3699,40 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" msgstr "बिटटोरेंट एप्लिकेशन उपयोग कर फ़ाइल डाउनलोड करें" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy #| msgid "Monkeysphere" msgid "MLDonkey" msgstr "मंकीसफीर" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 #, fuzzy #| msgid "File Sharing" msgid "Peer-to-peer File Sharing" @@ -3855,7 +3750,7 @@ msgstr "मंकीसफीर" msgid "AMLDonkey" msgstr "मंकीसफीर" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3874,7 +3769,7 @@ msgstr "" "है. Monkeysphere SSH documentation देखिये और जानकारी के लिये." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3891,7 +3786,7 @@ msgstr "" "जो Monkeysphere website पर उपलब्ध है." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "मंकीसफीर" @@ -4015,13 +3910,13 @@ msgstr "चाबी किसर्वर पर प्रकाशित क msgid "Error occurred while publishing key." msgstr "चाबी प्रकाशित करते समय एरर हो गया." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "ममबल एक खुला सोरस, कम विलंबता, एन्क्रिप्टेड अच्छा गुणवत्ता आवाज चैट सॉफ्टवेयर है." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4031,11 +3926,11 @@ msgstr "" "mumble.info\">Clients अापके डेस्कटॉप और एंड्रॉयड डिवाइस से ममबल से कनेक्ट होने के " "लिए उपलब्ध हैं." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "ममबल" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "वॉयस चैट" @@ -4092,23 +3987,23 @@ msgstr "" msgid "Services" msgstr "सर्विस" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "नेटवर्क्‍स" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC आईपीवी पर उपयोग कर रहा है{kind}" @@ -4611,6 +4506,11 @@ msgstr "आईपीवी6" msgid "This connection is not active." msgstr "यह कनेक्शन सक्रिय नहीं है." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "सुरक्षा" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5108,7 +5008,7 @@ msgstr "जेनेरिक" msgid "TUN or TAP interface" msgstr "इंटरफ़ेस" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5205,7 +5105,7 @@ msgstr "कनेक्शन {name} हटाया गया." msgid "Failed to delete connection: Connection not found." msgstr "कनेक्शन हटाने में विफल: कनेक्शन नहीं मिला." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5221,22 +5121,22 @@ msgstr "" "आंतरिक सर्विसस उपयोग करने के लिये. आप बाकी सब इंटरनेट {box_name} के जरिए उपयोग कर " "सकते हैं अगर अापको और सुरक्षा और गुमनामी चाहिये." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "कनेक्शन टाइप" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "ओपन वीपीएन" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "वर्चुअल प्राइवेट नेटवर्क" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5315,7 +5215,7 @@ msgstr "प्रोफ़ाइल हर %(box_name)s यूसर के ल msgid "Download my profile" msgstr "मेरी प्रोफ़ाइल डाउनलोड करें" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5327,17 +5227,17 @@ msgstr "" "सीधा कनेक्शन नहीं है. इसके जरूरत है सिर्फ आपके {box_name} के सर्विसस बाकी इंटरनेट से पहुँच " "योग्य नहीं. इसमें इन स्थितियों को शामिल किया गया है:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} एक प्रतिबंधित फ़ायरवॉल के पीछे है." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{box_name} एक (वायरलेस) रूटर से कनेक्टेड है जिसे आप नियंत्रित नहीं करते हैं." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5345,7 +5245,7 @@ msgstr "" "आपका ISP आपको एक बाहरी IP एड्रेस नहीं दता लेकिन NAT के माध्यम से इंटरनेट कनेक्शन प्रदान " "करता है." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5353,11 +5253,11 @@ msgstr "" "आपके ISP आपको एक स्थिर IP एड्रेस प्रदान नहीं करता है और आपके IP एड्रेस बदलाएग जब आप " "इंटरनेट से कनेक्ट होते हैं." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "आपके ISP आने वाले कनेक्शंसस को सीमित करता है." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5376,15 +5276,15 @@ msgstr "" "pagekite.net. भविष्य में अापका दोस्त का " "{box_name} इसके लिये उपयोग कर सकते हैं." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "पेजकइट" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "सार्वजनिक विसिबिलिटी" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 #, fuzzy #| msgid "PageKite Account" msgid "PageKite Domain" @@ -5538,25 +5438,25 @@ msgstr "" "SSH ग्राहक सेटअप देखें instructions" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -5628,7 +5528,7 @@ msgstr "" msgid "Shut Down Now" msgstr "अब शट डाउन करें" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5638,7 +5538,7 @@ msgstr "" "लिए, वेब पेज डेटा और HTTP हेडर को मोडिफाई करने के लिए, ऐकसेस को नियंत्रित करने के लिए " "और एड या दुसरा इंटरनेट का जंक हटाने के लिए. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5652,20 +5552,20 @@ msgstr "" "कॉन्फ़िगरेशन विवरण और प्रलेखन यहां देख सकते हैं http://config.privoxy.org/ या http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "प्रिवोक्सी" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "वेब प्रॉक्सी" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "{url} ऐकसेस करें प्रॉक्सी लेकर {proxy} टीसीपी पर{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5681,7 +5581,7 @@ msgstr "" "ताकि आप हमेशा ऑनलाइन रखते हुए और एक या अधिक क्वासेल क्लाइंट डेस्कटॉप या मोबाइल से इसेसे " "कनेक्ट और डिस्कनेक्ट करने के लिए उपयोग किया जा सकता है." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your मोबाइल से कनेक्ट होने के लिए क्लाइंट्स उपलब्ध " "हैं." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "क्वासेल" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "आईआरसी क्लाइंट" @@ -5705,7 +5605,7 @@ msgstr "आईआरसी क्लाइंट" msgid "Quasseldroid" msgstr "क्वासेलड्रोइड" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5724,19 +5624,19 @@ msgstr "" "org/clients/\">समर्थित क्लाइंट एप्लिकेशन कि जरुरत है. राडिकैल किसी {box_name} " "यूसर पहुंचा जा सकता है एक लॉगिन के साथ." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "राडिकैल" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "कैलेंडर और पता पुस्तिका" @@ -5826,7 +5726,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "ऐकसेस अधिकार कॉंफ़िगरेशन अपडेट किया गया" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5837,7 +5737,7 @@ msgstr "" "साथ. यह पूरा कार्यक्षमता देता है, सहित MIME समर्थन, पता पुस्तिका, फ़ोल्डर हेरफेर, संदेश " "खोज और स्पेल जाँच." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5858,7 +5758,7 @@ msgstr "" "SSL पर IMAP के लिए (अनुशंसित), imaps://imap.example.com जैसे सर्वर " "फ़ील्ड भरें." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5873,17 +5773,17 @@ msgstr "" "security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "ईमेल क्लाइंट" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5892,31 +5792,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Distributed File Storage" msgid "Network File Storage" @@ -6052,7 +5952,7 @@ msgstr "शेयर संपादित किया गया." msgid "Error disabling share: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6060,7 +5960,7 @@ msgstr "" "सिरएक्स एक गोपनीयता संमान इंटरनेट मेटा खोज इंजन है. यह विभिन्न खोज यन्त्र से परिणाम " "इकट्ठा और प्रदर्शन करता है." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6068,15 +5968,15 @@ msgstr "" "सिरएक्स खोज इंजन द्वारा ट्रैकिंग और प्रोफाइलिंग से बचने के लिए इस्तेमाल किया जा सकता है. " "यह डिफ़ॉल्ट से कोई कुकीज़ स्टोर नहीं करता है." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "वेब सरच किजिये" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "सिरएक्स" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "वेब खोज" @@ -6251,11 +6151,11 @@ msgstr "त्रुटि सेटिंग एक्सेस प्रति msgid "Updated security configuration" msgstr "सुरक्षा कॉंफ़िगरेशन अपडेट किया गया" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "शारली आप को बुकमार्क्स बचाने और साझा करने के लिए अनुमति देता है." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6269,15 +6169,15 @@ msgstr "" "होगा. नोट करिये शारली सिर्फ एकल यूसर अकाउंट का समर्थन करता है जो आपको प्रारंभिक " "यात्रा पर सेटअप करने की जरुरत होगा." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "शारली" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "बुकमार्क्स" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6286,7 +6186,7 @@ msgstr "" "शैडोवॉक्स एक हल्के और सुरक्षित सॉक्स 5 प्रॉक्सी है, आपके इंटरनेट यातायात रक्षा करने के लिये. " "यह इंटरनेट फ़िल्टरिंग और सेंसरशिप बाईपास करने के लिए इस्तेमाल किया जा सकता है." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6298,7 +6198,7 @@ msgstr "" "है. यह एक सॉक्स 5 प्रॉक्सी भी चला जाएगा. स्थानीय डिवाइसस इस प्रॉक्सी से कनेक्ट कर सकते " "हैं, और उनके डेटा एंक्रिप्टेड और शैडोवॉक्स सर्वर के माध्यम से प्रॉक्सी हो जाएगा." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6306,11 +6206,11 @@ msgstr "" "सेटअप के बाद शैडोवॉक्स का उपयोग करने के लिए,अपने डिवाइस, ब्राउज़र या एप्लिकेशन में सॉक्स5 " "प्रॉक्सी यूआरएल पर सेट करें http://freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "शाडोसोक्स" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "सोक्स5 प्रॉक्सी" @@ -6452,7 +6352,7 @@ msgstr "शेयर संपादित करें" msgid "Share deleted." msgstr "शेयर हटाया गया." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6462,7 +6362,7 @@ msgstr "" "को वापस रोल करने के लिए इस्तेमाल किया जा सकता है, एक पहले अच्छी स्थिति ज्ञात है अगर " "सिस्टम पर अवांछित बदलाव किया गया." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6470,7 +6370,7 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 #, fuzzy #| msgid "" #| "Snapshots work on btrfs file systems only and on the root partition only. " @@ -6484,7 +6384,7 @@ msgstr "" "स्नैपशॉट्स सिर्फ btrfs फाइल सिस्टम और रूट पार्टीशन पर काम करते हैं. स्नैपशॉट बैकअप के लिए " "प्रतिस्थापन नहीं है क्योंकि वे उसी पार्टीशन पर संग्रहित होते हैं. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "स्टोरेज स्नैपशॉटस" @@ -6683,7 +6583,7 @@ msgstr "रोलबैक शुरु करने के लिए सिस msgid "Rollback to Snapshot" msgstr "स्नैपशॉट को रोलबैक करें" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6694,7 +6594,7 @@ msgstr "" "स्वीकार करने के लिये. एक अधिकार दिया गया रिमोट कंप्यूटर प्रशासन कार्य निष्पादित कर " "सकता है, फ़ाइलों की कॉपी कर सकता है या ऐसे कनेक्शंस का उपयोग करके अंय सर्विसस चलाएे." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "सुरक्षित शैल (SSH) सर्वर" @@ -6741,7 +6641,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "एकल साइन-ऑन" @@ -6749,7 +6649,7 @@ msgstr "एकल साइन-ऑन" msgid "Login" msgstr "लॉगिन" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6757,91 +6657,91 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "स्टोरेज" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} बाइट्स" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} किब" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} मेब" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} जिब" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} टीब" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "ऑपरेशन अनुत्तीर्ण हो गया." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "ऑपरेशन रद्द किया गया." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "यह डिवाइस पहले से अनमाउट किया जा रहा है." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "यह ऑपरेशन अनुपलब्ध है क्यैकि ड्राइवर/उपकरण टूल समर्थित नहीं है." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "ऑपरेशन टाइम आउट हो गया." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "यह ऑपरेशन गहरी नींद की स्थिति का डिस्क को जाग जाएगा." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "व्यस्त डिवाइस को अनमाउंट करने का प्रयास कर रहा है." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "ऑपरेशन पहले से रद्द किया गया." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "अनुरोधित ऑपरेशन करने के लिए अधिकृत नहीं है." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "यह डिवाइस पहले से माउंट किया गया." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "यह डिवाइस नहीं माउंट किया गया." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "अनुरोधित विकल्प का उपयोग करने की अनुमति नहीं है." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -6851,15 +6751,15 @@ msgstr "" "वार्निंग: सिस्टम पार्टीशन पर कम जगह ({percent_used}% उपयोग किया गया, " "{free_space} free)." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6990,7 +6890,7 @@ msgstr "डिवाइस सुरक्षित रूप से अनप msgid "Error ejecting device: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7001,7 +6901,7 @@ msgstr "" "सिंक्रनाइज़ करने के लिए एक एप्लिकेशन है. सिंकतिन्ग चलते हए डिवाइसस पर किसी एक डिवाइस में " "फ़ाइलों का निर्माण, संशोधन, या हटाना ऑटोमेटिक दोहरा किया गया." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, fuzzy, python-brace-format #| msgid "" #| "Running Syncthing on {box_name} provides an extra synchronization point " @@ -7025,20 +6925,20 @@ msgstr "" "सेट एक फ़ोल्डर्स का एक अलग सेट का उपयोग करके सिंक्रनाइज़ किया जा सकता है. {box_name} " "पर वेब इंटरफेस सिर्फ \"एडमिन\" समूह के यूसकस के लिए उपलब्ध है." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "सिंकतिन्ग एप्लिकेशन का प्रशासन करें" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "सिंकतिन्ग" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "फ़ाइल सिंक्रनाइज़ेशन" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7049,7 +6949,7 @@ msgstr "" "नेटवर्क पर फ़ाइलें स्टोर करने के लिये स्वतंत्र सुरक्षा का उपयोग करता है. अगर कुछ नोड्स विफल " "होगा, आपकी फ़ाइलें शेष नोड्स से पुनर्प्राप्त किया जा सकता है." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7059,11 +6959,11 @@ msgstr "" "यह {box_name} एक स्टोरेज नोड आैर इंट्रोड्यूसर डिफ़ॉल्ट से होस्ट करता है. अतिरिक्त " "इंट्रोड्यूसरस जोड़ा जा सकता है, जो इस नोड को अन्य स्टोरेज नोड्स में पेश करेगा." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "टाहो-एलएएफएस" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "फ़ाइल स्टोरेज वितरित" @@ -7102,7 +7002,7 @@ msgstr "कनेक्टेड इंट्रोड्यूसरस" msgid "Remove" msgstr "निकालें" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7115,42 +7015,42 @@ msgstr "" "टो प्रोजेक्ट सिफारिश की है कि आप टो ब्राउज़र उपयोग करें." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "टोर" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "टोर हिडन सर्विस" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "टोर सोक्स प्रॉक्सी" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "टो ब्रिज रीले" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "टोर रीले पोर्ट उपलब्ध है" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "यूआरएल एक्सेस करें {url} टीसीपी पर {kind} टोर के माध्यम से" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "टोर उपयोग की पुष्टि करें {url} पर टीसीपी पर {kind}" @@ -7303,17 +7203,13 @@ msgstr "सॉक्स" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "एक टोर सॉक्स पोर्ट आपका %(box_name)s र उपलब्ध है, TCP पोर्ट ९०५० पर." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "सेटिंग स्थिर है" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 #, fuzzy #| msgid "Deluge is a BitTorrent client that features a Web UI." msgid "Transmission is a BitTorrent client with a web interface." msgstr "डेलूज एक बिटटोरेंट ग्राहक है जिसमे वेब युआई है." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7325,16 +7221,16 @@ msgstr "" "बिटटोरेंट एक पीअर-टू-पीअर फ़ाइल साझा प्रोटोकॉल है. ट्रांसमिशन डेमॉन बिटटोरेंट फ़ाइल साझा " "संभालती है. नोट-बिटटोरेंट अनाम नहीं है." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "हस्तांतरण" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7344,7 +7240,7 @@ msgstr "" "से समाचार पढ़ने की अनुमति देने के लिए डिज़ाइन किया गया है, एक असली डेस्कटॉप एप्लिकेशन के " "जैसे." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -7358,7 +7254,7 @@ msgstr "" "माैजूद होते है. यह किसी एक {box_name} के सात लॉग इन " "कर सकता है." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -7370,15 +7266,15 @@ msgstr "" "टैनी टैनी आरएसएस का मोबाइल या डेस्कटॉप एप्लिकेशन उपयोग करते समय, यह यूआरएल/tt-rss-app कनेक्ट करने के लिए उपयोग करें." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "समाचार फ़ीड्स पढ़ें और सब्सक्राइब करें" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "टिनी टिनी आरएसएस" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "समाचार फ़ीड रीडर" @@ -7386,12 +7282,12 @@ msgstr "समाचार फ़ीड रीडर" msgid "Tiny Tiny RSS (Fork)" msgstr "टैनी टैनी आरएसएस (फोर्क)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7399,36 +7295,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "अपडेट" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update" msgid "Updates" msgstr "अपडेट" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" msgstr "फ्रीडमबाक्स फाउंडेशन" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "ऑटोमेटिक अपग्रेडस अक्षम किया गया" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7630,14 +7533,14 @@ msgstr "अपग्रेड प्रारंभ करना विफल msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7645,15 +7548,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "यूसरस और समूह" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "सब सर्विसस और सिस्टम सेटिंग्स तक पहुंच" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "एलडीएपी प्रविष्टि चेक करें \"{search_item}\"" @@ -7915,18 +7818,18 @@ msgstr "पासवर्ड बदलिये" msgid "Password changed successfully." msgstr "पासवर्ड सफलतापूर्वक बदल गया." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8279,7 +8182,7 @@ msgstr "कनेक्शन हटाएँ" msgid "Server deleted." msgstr "शेयर हटाया गया." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8288,7 +8191,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8297,28 +8200,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "ऍड्रेस" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8336,7 +8239,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8349,7 +8252,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8357,11 +8260,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8397,23 +8300,23 @@ msgstr "पीपीपीअोइ" msgid "Generic" msgstr "जेनेरिक" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "इंस्टालेशन करते समय पर त्रुटि" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "इंस्टॉलिंग" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "डाउनलोडिंग" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "मीडिया बदलाव" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "कॉंफ़िगरेशन फ़ाइल: {file}" @@ -8494,6 +8397,10 @@ msgstr "%(box_name)s के लिए कोर फंक्शनलिटी msgid " Home" msgstr " होम" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "होम" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " ऐप्स" @@ -8786,6 +8693,71 @@ msgstr "%(percentage)s%% पूर्ण" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "अक्षम किया गया है" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "केबल कनेक्ट हो गया" + +#, fuzzy +#~| msgid "Delete all the snapshots" +#~ msgid "Delete selected" +#~ msgstr "सब स्नैपशॉटस हटाएँ" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "New value" +#~ msgstr "बैकअप" + +#, fuzzy +#~| msgid "Download directory" +#~ msgid "You do not have a home directory." +#~ msgstr "डायरेक्टरी डाउनलोड करें" + +#, fuzzy +#~| msgid "Create User" +#~ msgid "Create home directory" +#~ msgstr "यूसर बनाये" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "वर्तमान स्थिति:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "लेटस एंक्रिप्ट" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "डोमेन नाम सेट हो गया है" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "प्रमाणपत्र स्थिति" + +#, fuzzy +#~| msgid "Create User" +#~ msgid "Private key path" +#~ msgstr "यूसर बनाये" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "क्षति को सक्षम करें" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "अक्षम किया गया है" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "सिस्टम में केवल व्यवस्थापक को नहीं हटा सकता." diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 1a5e1684b..3c4ba57be 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-04-22 21:32+0000\n" "Last-Translator: Benedek Nagy \n" "Language-Team: Hungarian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1044,15 +1045,15 @@ msgstr "" "alkalmazáshoz. Minden hozzáféréssel rendelkező felhasználó használhatja az " "összes könyvtárat." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "calibre e-könyv könyvtárak használata" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "E-könyv könyvtár" @@ -1126,7 +1127,7 @@ msgstr "{name} törölve." msgid "Could not delete {name}: {error}" msgstr "{name} nem törölhető: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1139,7 +1140,7 @@ msgstr "" "ritkábban használt fejlett funkcióhoz érhetők el vezérlők. Egy web alapú " "terminál szintén elérhető a konzolos műveletekhez." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1151,7 +1152,7 @@ msgstr "" "nyitására és olyan fejlett hálózati funkciókhoz mint az aggregált " "interfészek, hidalás és VLAN kezelés." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1160,7 +1161,7 @@ msgstr "" "Használhatja majd a {box_name} eszköz bármely adminisztrátori csoportba " "tartozó felhasználója." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1168,12 +1169,12 @@ msgstr "" "A Cockpit megköveteli, hogy a domain néven keresztül érd el. Nem fog működni " "ha az URL részeként az IP címmel érik el." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Kiszolgáló adminisztráció" @@ -1339,7 +1340,7 @@ msgstr "Haladó szintű alkalmazások és funkciók megjelenítése" msgid "Hiding advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók elrejtése" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1352,7 +1353,7 @@ msgstr "" "felépíteni olyan felek között, akik egyébként nem tudnak csatlakozni " "egymáshoz." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, fuzzy, python-brace-format #| msgid "" #| "It is not meant to be used directly by users. Servers such as matrix-" @@ -1366,11 +1367,11 @@ msgstr "" "kiszolgálók, mint a matrix-synapse, az itt megadott részletekkel kell " "konfigurálni." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "VoIP Segéd" @@ -1401,7 +1402,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Használja az alábbi megosztott hitelesítési titkos kulcsot:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1409,11 +1410,11 @@ msgstr "" "A hálózati időkiszolgáló egy olyan program, amely karbantartja a rendszeridő " "szinkronizációját az Interneten lévő kiszolgálókéval." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Dátum és idő" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Az idő szinkronizálva van az NTP kiszolgálóhoz" @@ -1442,11 +1443,11 @@ msgstr "Hiba az időzóna beállítása során: {exception}" msgid "Time zone set" msgstr "Időzóna beállítva" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge egy webes felülettel rendelkező BitTorrent kliens." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1454,17 +1455,17 @@ msgstr "" "Az alapértelmezett jelszó 'deluge', de a szolgáltatás engedélyezése után " "jelentkezz be és azonnal változtasd meg." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Fájlok letöltése BitTorrent alkalmazások használatával" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "Webes BitTorrent kliens" @@ -1491,18 +1492,18 @@ msgid "Diagnostics" msgstr "Hibaellenőrzés" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "sikerült" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "sikertelen" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "hiba" @@ -1592,7 +1593,7 @@ msgstr "Eredmény" msgid "Diagnostic Test" msgstr "Ellenőrző tesz" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1600,12 +1601,12 @@ msgstr "" "A diaspora* egy decentralizált közösségi háló, ahol a saját adataidat te " "tárolhatod és te felügyelheted." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Egyesített közösségi háló" @@ -1666,7 +1667,7 @@ msgstr "Felhasználók regisztrációja engedélyezve" msgid "User registrations disabled" msgstr "Felhasználók regisztrációja letiltva" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1678,7 +1679,7 @@ msgstr "" "Ez megakadályozza azt, hogy mások megtalálják ezen {box_name} eszköz által " "biztosított szolgáltatásokat." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1697,11 +1698,11 @@ msgstr "" "az Interneten lekérdezi a DNS neved, válaszként az aktuális IP címedet fogja " "megkapni." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Dinamikus DNS ügyfél" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Dinamikus Domain név" @@ -1942,7 +1943,7 @@ msgstr "Dynamic DNS beállítása" msgid "Dynamic DNS Status" msgstr "Dynamic DNS állapot" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1950,7 +1951,7 @@ msgstr "" "Az XMPP egy nyílt és szabványos kommunikációs protokoll. Itt tudod futtatni " "és konfigurálni az XMPP kiszolgálódat, amit ejabberd-nek neveznek." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web client felhasználó számára {box_name} " "felhasználónéven." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn alkalmazást vagy " "állíts be egy külső kiszolgálót." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Chat szerver" @@ -2109,52 +2110,20 @@ msgstr "Chat szerver" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Hiba a domain név beállítása közben: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -#, fuzzy -#| msgid "Specified directory does not exist." -msgid "User does not exist" -msgstr "A megadott könyvtár nem létezik." - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "unavailable" @@ -2183,18 +2152,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Nincs tanúsítvány" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Adjon meg egy érvényes felhasználónevet." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Adjon meg egy érvényes felhasználónevet." + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domain" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Könyvtárak kezelése" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Engedélyezve" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Letiltva" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2213,191 +2227,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Könyvtárak kezelése" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Letiltva" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "kábel csatlakoztatva" +#| msgid "Enabled" +msgid "Enable" +msgstr "Engedélyezve" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Deleted selected snapshots" -msgid "Delete selected" -msgstr "Kiválasztott pillanatképek törölve" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Új biztonsági másolat létrehozása" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Hozzáadás" -#: plinth/modules/email_server/templates/email_domains.html:19 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domainek" + +#: plinth/modules/email_server/templates/email_server.html:19 #, fuzzy -#| msgid "New Backup" -msgid "New value" -msgstr "Új biztonsági másolat" +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Pillanatképek kezelése" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Frissítés" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Szolgáltatás típusa" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Path is not a directory." -msgid "You do not have a home directory." -msgstr "Az elérési út nem könyvtár." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Updated media directory" -msgid "Create home directory" -msgstr "Médiakönyvtár frissítve" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "Jelenlegi állapot:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Domain név beállítva" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Tanúsítvány állapot" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Private repository" -msgid "Private key path" -msgstr "Privát tároló" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Kezdőlap" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Biztonság" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domainek" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Sérülés engedélyezése" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Hiba történt a beállítás közben." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Letiltva" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "A beállítás változatlan" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2408,7 +2314,7 @@ msgstr "" "hálózati forgalmát felügyeli. A folyamatosan aktív és megfelelően beállított " "tűzfal csökkenti az internetről leselkedő biztonsági fenyegetések kockázatát." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Tűzfal" @@ -2445,19 +2351,6 @@ msgstr "" msgid "Service/Port" msgstr "Szolgáltatás/port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Engedélyezve" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Letiltva" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Engedélyezett" @@ -2543,7 +2436,7 @@ msgstr "Beállítás elkezdése" msgid "Setup Complete" msgstr "Beállítás kész" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2561,7 +2454,7 @@ msgstr "" "parancssoros Git klienssel vagy a többféle grafikus kliensek valamelyikével. " "És megoszthatod a kódodat az emberekkel szerte a világon." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2570,15 +2463,15 @@ msgstr "" "href=\"https://git-scm.com/docs/gittutorial\">Git gyorstalpalót (angolul)." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Olvasási-írási hozzáférés a Git tárolókhoz" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Egyszerű Git hoszting" @@ -3013,7 +2906,7 @@ msgstr "A {box_name} projektről" msgid "{box_name} Manual" msgstr "{box_name} kézikönyv" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3025,7 +2918,7 @@ msgstr "" "biztosít anonimitást, hogy a titkosított adatforgalmat világszerte " "önkéntesek által üzemeltetett hálózatán küldi keresztül." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3033,7 +2926,7 @@ msgstr "" "További információt találhat az I2P-ről a projekt weboldalán." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -3041,19 +2934,19 @@ msgstr "" "Az első látogatás a megadott webes felületen elindítja a konfigurálási " "folyamatot." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "I2P alkalmazás kezelése" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Anonim hálózat" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2P proxy" @@ -3098,7 +2991,7 @@ msgstr "" "Tölts le fájlokat torrentek hozzáadásával vagy készíts új torrentet fájl " "megosztásához." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3108,7 +3001,7 @@ msgstr "" "leírónyelvet támogat, beleértve a Markdown-t és olyan általános bloggolási " "funkciókat, mint például a kommentek és az RSS-hírcsatornák." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3122,15 +3015,15 @@ msgstr "" "A Felhasználók beállítása oldalon tudod " "módosítani ezeket a jogosultságokat vagy hozzáadhatsz új felhasználókat." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki és blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Wiki alkalmazások megtekintése és szerkesztése" @@ -3209,12 +3102,12 @@ msgstr "{title} törölve." msgid "Could not delete {title}: {error}" msgstr "{title} nem törölhető: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted egy kiszolgáló a Gobby-hoz, a kollaboratív szövegszerkesztőhöz." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3226,11 +3119,11 @@ msgstr "" "\"Csatlakozás a kiszolgálóhoz\"-t (\"Connect to Server\") és írd be a " "{box_name} eszközöd domain nevét." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby kiszolgáló" @@ -3251,7 +3144,7 @@ msgstr "" "Indítsd el a Gobby-t majd válaszd a \"Csatlakozás a kiszolgálóhoz\"-t " "(\"Connect to Server\") és írd be a {box_name} eszközöd domain nevét." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3259,11 +3152,11 @@ msgstr "" "JSXC egy webes kliens XMPP-hez. Általában helyileg futtatott XMPP " "kiszolgálóval használják." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Chat kliens" @@ -3272,7 +3165,7 @@ msgstr "Chat kliens" msgid "JavaScript license information" msgstr "JavaScript licencinformáció" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3288,7 +3181,7 @@ msgstr "" "Teszi ezt oly módon, hogy bizonyítja a Let's Encrypt hitelesítésszolgáltató " "(CA) számára a domain tulajdonjogát." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3301,15 +3194,15 @@ msgstr "" "letsencrypt.org/repository/\">Let's Encrypt Előfizetői Szerződést " "mielőtt használnád ezt a szolgáltatást." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Tanúsítványok" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "Sikertelen tesztelés: Nincsenek konfigurált domainek." @@ -3414,7 +3307,7 @@ msgstr "{domain} domain-on a tanúsítvány sikeresen törölve" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} domain-on nem sikerült kitörölni a tanúsítványt: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3432,14 +3325,14 @@ msgstr "" "beszélgetni az összes többi Matrix kiszolgáló felhasználóival a szövetségen " "keresztül." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3534,7 +3427,7 @@ msgstr "" "szükséged. Kérlek, látogasd meg a Let's " "Encrypt weboldalát ahhoz, hogy beszerezz egyet." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3547,7 +3440,7 @@ msgstr "" "helyet adj egy wiki-szerű weboldalnak, feljegyzéseket írj vagy hogy " "projekteken együttműködj barátaiddal." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3561,7 +3454,7 @@ msgstr "" "további felhasználói fiókokat a MediaWiki Special:CreateAccount oldalán." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3569,12 +3462,12 @@ msgstr "" "Bárki, aki ismeri a hivatkozást erre a wiki-re az el is tudja olvasni annak " "tartalmát. Azt módosítani viszont csak a bejelentkezett felhasználók tudják." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3667,7 +3560,7 @@ msgstr "Az alapértelmezett felszín megváltozott" msgid "Server URL updated" msgstr "Kiszolgáló URL frissítve" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3681,11 +3574,11 @@ msgstr "" "kiszolgálóra egy Minetest " "kliensre is szükséged lesz." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Blokk sandbox" @@ -3756,7 +3649,7 @@ msgstr "PVP beállítás frissítve" msgid "Damage configuration updated" msgstr "Sérülés beállítás frissítve" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3774,15 +3667,15 @@ msgstr "" "médialejátszók, okostelefonok, televíziók és játékkonzolok (például PS3 és " "Xbox 360), vagy olyan alkalmazásokkal mint a totem és a Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Médiaközvetítő (streaming) kiszolgáló" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Egyszerű médiaszerver" @@ -3827,7 +3720,7 @@ msgstr "A megadott könyvtár nem létezik." msgid "Updated media directory" msgstr "Médiakönyvtár frissítve" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3837,7 +3730,7 @@ msgstr "" "cseréjéhez használnak. Részt tud venni többféle P2P hálózatban is, beleértve " "az eDonkey-t, Kademlia-t, Overnet-et, BitTorrent-et és a DirectConnect-et." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3848,7 +3741,7 @@ msgstr "" "bármely, külön mobil vagy asztali kezelőfelületen vagy telnet interfészen " "keresztül. További részletek a kézikönyvben." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3856,16 +3749,16 @@ msgstr "" "{box_name} eszközön a letöltött fájlok a /var/lib/mldonkey/ könyvtárban " "találhatóak meg." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Fájlok letöltése eDonkey alkalmazások használatával" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "P2P Fájlmegosztás" @@ -3877,7 +3770,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3898,7 +3791,7 @@ msgstr "" "Tekintsd meg a Monkeysphere SSH dokumentációt további részletekért." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3917,7 +3810,7 @@ msgstr "" "telepítésére, amelyek elérhetők a Monkeysphere weboldalon." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4042,7 +3935,7 @@ msgstr "Kulcs közzétéve a kulcskiszolgálónak." msgid "Error occurred while publishing key." msgstr "Hiba történt a kulcs közzététele során." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4050,7 +3943,7 @@ msgstr "" "A Mumble egy nyílt forráskódú, alacsony késéssel működő, titkosított, magas " "hangminőségű audiokonferencia szoftver." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4060,11 +3953,11 @@ msgstr "" "kapcsolódhatsz. Mumble kliensek " "elérhetőek az asztali és Android eszközökhöz." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Audiókonferencia" @@ -4123,7 +4016,7 @@ msgstr "Összes webalkalmazás" msgid "Services" msgstr "Szolgáltatások" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4132,7 +4025,7 @@ msgstr "" "Fi-n vagy PPPoE-n keresztül. Ossza meg azt a kapcsolatot a hálózaton lévő " "többi eszközzel." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4140,11 +4033,11 @@ msgstr "" "Előfordulhat, hogy más módszerekkel felügyelt eszközök itt nem lesznek a " "konfiguráláshoz elérhetők." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Hálózatok" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC használata IPv{kind} felett" @@ -4712,6 +4605,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Ez a kapcsolat nem aktív." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Biztonság" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5161,7 +5059,7 @@ msgstr "általános" msgid "TUN or TAP interface" msgstr "TUN vagy TAP interfész" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5252,7 +5150,7 @@ msgstr "Kapcsolat törölve: {name}." msgid "Failed to delete connection: Connection not found." msgstr "A kapcsolat törlése sikertelen, mivel az nem található." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5270,20 +5168,20 @@ msgstr "" "eszközödön keresztül az Internetet is további biztonság és anonimitás " "érdekében." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Csatlakozás VPN-szolgáltatásokhoz" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Virtuális magánhálózat" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5355,7 +5253,7 @@ msgstr "" msgid "Download my profile" msgstr "Saját profilom letöltése" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5369,19 +5267,19 @@ msgstr "" "szolgáltatásai nem érhetőek el az internet felől. Ez magában foglalja az " "alábbi eseteket:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} eszközöd egy korlátozott tűzfal mögött van." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} eszközöd egy olyan (vezetéknélküli) router-hez kapcsolódik, " "amelyet te nem állíthatsz be." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5389,7 +5287,7 @@ msgstr "" "Az internetszolgáltatód nem biztosít neked külső IP címet, ehelyett hálózati " "címfordításon (NAT) keresztül tudod elérni az Internetet." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5397,11 +5295,11 @@ msgstr "" "Az internetszolgáltatód nem biztosít neked statikus IP címet és az IP címed " "mindig megváltozik, amikor az Internetre csatlakozol." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Az internetszolgáltatód korlátozza a bejövő kapcsolatokat." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5415,15 +5313,15 @@ msgstr "" "net. A jövőben talán a barátod {box_name} eszközét is lehetőséged lesz " "használni erre a célra." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Nyilvános láthatóság" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "PageKite domain" @@ -5566,25 +5464,25 @@ msgstr "" "Tekintsd meg az SSH kliens beállítási instrukciókat" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Rendszerfigyelés" @@ -5655,7 +5553,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Leállítás most" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5666,7 +5564,7 @@ msgstr "" "Módosítja a weboldal adatait és HTTP fejléceket, szabályozza a hozzáférést, " "eltávolítja a hirdetéseket és az egyéb nem kívánt internetes szemetet. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5681,21 +5579,21 @@ msgstr "" "a címeken: http://config.privoxy.org/ és http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Web proxy" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" "Hozzáférés a {url} URL-hez {proxy} proxy használatával tcp{kind}-on keresztül" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5712,7 +5610,7 @@ msgstr "" "szolgáltatását, aminek segítségével mindig online lehetsz és egy, vagy több " "Quassel klienssel kapcsolódhatsz hozzá a mobilodról vagy az asztali gépedről." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your asztali és mobil " "eszközökhöz is." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC kliens" @@ -5736,7 +5634,7 @@ msgstr "IRC kliens" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5752,7 +5650,7 @@ msgstr "" "alkalmazásra is. A Radicale elérhető bármely felhasználó számára " "„{box_name}” felhasználónév használatával." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5763,12 +5661,12 @@ msgstr "" "eseményeket vagy kapcsolatokat, ezeket egy külön kliens használatával " "teheted meg." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Naptár és címjegyzék" @@ -5849,7 +5747,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Hozzáférési jogok beállításai frissítve" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5861,7 +5759,7 @@ msgstr "" "teljes funkcionalitást biztosítja, beleértve a MIME támogatást, " "címjegyzéket, mappa kezelést, üzenet keresést és helyesírás-ellenőrzést." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5875,7 +5773,7 @@ msgstr "" "hoz (ez az ajánlott), töltsd ki a kiszolgáló mezőt ezen minta alapján: " "imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5891,17 +5789,17 @@ msgstr "" "href=\"https://www.google.com/settings/security/lesssecureapps\">https://www." "google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "E-mail kliens" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5910,31 +5808,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Hálózati fájltároló" @@ -6042,7 +5940,7 @@ msgstr "Megosztás letiltva." msgid "Error disabling share: {error_message}" msgstr "Hiba történt a megosztás letiltásakor: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6050,7 +5948,7 @@ msgstr "" "A Searx egy magánszférát tiszteletben tartó internetes metakereső. Több " "keresőmotor eredményeit gyűjti össze és jeleníti meg." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6058,15 +5956,15 @@ msgstr "" "A Searx segítségével elkerülhető, hogy a keresőmotorok nyomon kövessék és " "profilozzák a felhasználót. Sütiket eleve nem tárol." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Keresés a weben" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Webes keresés" @@ -6236,11 +6134,11 @@ msgstr "Hiba a korlátozott hozzáférés beállítása során: {exception}" msgid "Updated security configuration" msgstr "Biztonsági beállítás frissítve" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "A Shaarli lehetővé teszi hogy elmentsd és megoszd a könyvjelzőidet." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6248,15 +6146,15 @@ msgstr "" "Vedd figyelembe, hogy a Shaarli csak egy felhasználói fiókot támogat, melyet " "az első látogatás során be kell állítani." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Könyvjelzők" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6266,7 +6164,7 @@ msgstr "" "internetes forgalmad védelmére terveztek. Felhasználható az internetes " "szűrők és cenzúra megkerülésére." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6279,7 +6177,7 @@ msgstr "" "eszközeiddel csatlakozhatsz erre a proxyra, és az adataik titkosítva és " "proxizva lesznek a Shadowsocks kiszolgálón keresztül." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6288,11 +6186,11 @@ msgstr "" "SOCKS5 proxy URL-jét az eszközeiden, böngésződben vagy alkalmazásaidban így: " "http://freedombox_eszkozod_cime:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Socks5 Proxy" @@ -6437,7 +6335,7 @@ msgstr "Megosztás szerkesztése" msgid "Share deleted." msgstr "Megosztás törölve." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6448,7 +6346,7 @@ msgstr "" "működő állapotába való visszaállítására abban az esetben, ha nem kívánt " "változtatások történtek a rendszerben." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6460,7 +6358,7 @@ msgstr "" "pillanatképek automatikusan ki lesznek takarítva az alábbi beállítások " "szerint." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for Biztonsági mentést, mivel a pillanatképek csak ugyanazon a " "partíción tárolhatók amikről készülnek. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Háttértár-pillanatképek" @@ -6677,7 +6575,7 @@ msgstr "A visszaállítás befejezéséhez a rendszert újra kell indítani." msgid "Rollback to Snapshot" msgstr "Visszaállítás pillanatképre" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6689,7 +6587,7 @@ msgstr "" "számítógép felügyeleti feladatokat hajthat végre, fájlokat másolhat vagy " "egyéb szolgáltatásokat futtathat ilyen kapcsolat használatával." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Biztonságos parancsértelmező (SSH) kiszolgáló" @@ -6730,7 +6628,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "SSH jelszavas hitelesítés engedélyezve." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Egyszeri bejelentkezés" @@ -6738,7 +6636,7 @@ msgstr "Egyszeri bejelentkezés" msgid "Login" msgstr "Bejelentkezés" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6750,109 +6648,109 @@ msgstr "" "fel- és lecsatolhatsz cserélhető adathordozókat, kibővítheted a root " "partíciót, stb." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Háttértár" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "A művelet sikertelen." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "A művelet meg lett szakítva." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Az eszköz leválasztása már folyamatban van." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "A művelet nem támogatott hiányzó eszközvezérlő/segédeszköz támogatás miatt." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "A művelet túllépte az időkorlátot." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "A művelet fel fogja ébreszteni a lemezt, amely mély-alvó állapotban van." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" "Megpróbáltál leválasztani egy eszközt, amely jelenleg is használatban van." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "A művelet már meg lett szakítva." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Nem jogosult végrehajtani a kért műveletet." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Az eszköz már fel lett csatolva." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Az eszköz nincs felcsatolva." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Nem használhatja a kért lehetőséget." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Az eszközt egy másik felhasználó felcsatolva." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Kevés a szabad hely a rendszerpartíción: {percent_used}% felhasználva, " "{free_space} szabad." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6972,7 +6870,7 @@ msgstr "Az eszköz biztonságosan kivehető." msgid "Error ejecting device: {error_message}" msgstr "Hiba történt az eszköz kiadása során: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6984,7 +6882,7 @@ msgstr "" "eszköz fájljain végzett módosítások a többi eszközön is automatikusan " "jelentkeznek, amennyiben azokra telepítve van a szolgáltatás." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7004,20 +6902,20 @@ msgstr "" "felület csak az \"admin\" vagy a \"syncthing-access\" csoporthoz tartozó " "felhasználók számára hozzáférhető." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "A Syncthing alkalmazás beállítása" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Fájlszinkronizáció" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7029,7 +6927,7 @@ msgstr "" "elosztott hálózatán keresztül. Még ha néhány csomópont meg is hibásodik, a " "fájljaidat le tudod tölteni a fennmaradó csomópontokról." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7040,11 +6938,11 @@ msgstr "" "csomópontnak is otthont ad. További bevezető csomópontok is hozzáadhatók, " "melyek majd bemutatják ezt a csomópontot a többi adattároló csomópontnak." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Elosztott fájltároló" @@ -7084,7 +6982,7 @@ msgstr "Csatlakozott bevezetők" msgid "Remove" msgstr "Eltávolít" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7098,40 +6996,40 @@ msgstr "" "torproject.org/download/download-easy.html.en\">Tor böngésző használatát " "javasolja." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Tor Onion szolgáltatás" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Tor híd relay" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Tor relay port elérhető" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Hozzáférés a {url} URL-hez tcp{kind}-on Tor használatával" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Hagyd jóvá a Tor használatát {url} célcímhez tcp{kind} protokollon" @@ -7283,15 +7181,11 @@ msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "Egy Tor SOCKS port elérhető a te %(box_name)s eszközöd 9050-es TCP portján." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "A beállítás változatlan" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "A Transmission egy webes felülettel rendelkező BitTorrent kliens." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7299,16 +7193,16 @@ msgstr "" "A BitTorrent egy peer-to-peer fájlmegosztó protokoll. Vedd figyelembe, hogy " "a BitTorrent nem biztosít névtelenséget." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7318,7 +7212,7 @@ msgstr "" "tervezve, hogy elérhetővé tegye a hírolvasást bárhonnan, miközben igyekszik " "egy valódi asztali alkalmazás érzetét kelteni." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any bármely felhasználó számára {box_name} felhasználónévvel." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7336,15 +7230,15 @@ msgstr "" "hez, használd a /tt-rss-app URL-t a " "csatlakozáshoz." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Hírcsatornákra való feliratkozás / olvasás" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Hírcsatorna-olvasó" @@ -7352,13 +7246,13 @@ msgstr "Hírcsatorna-olvasó" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "A legfrissebb szoftver- és biztonsági frissítések ellenőrzése és alkalmazása." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7366,32 +7260,39 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Frissítés" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Frissítések" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox frissítve" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Distribution upgrade disabled" msgid "Distribution update started" msgstr "Disztribúció frissítés letiltva" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7568,14 +7469,14 @@ msgstr "A frissítést nem sikerült elindítani." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7583,15 +7484,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Felhasználók és csoportok" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Hozzáférés az összes szolgáltatáshoz és rendszerbeállításhoz" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP bejegyzés ellenőrzése: \"{search_item}\"" @@ -7835,18 +7736,18 @@ msgstr "Jelszómódosítás" msgid "Password changed successfully." msgstr "A jelszó módosítása sikeres." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8140,7 +8041,7 @@ msgstr "Kapcsolat törlése a kiszolgálóval" msgid "Server deleted." msgstr "Kiszolgáló törölve." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8149,7 +8050,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8158,28 +8059,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Cím" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8197,7 +8098,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8210,7 +8111,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8218,11 +8119,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8258,23 +8159,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Általános" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Hiba lépett fel a telepítés során" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "telepítés" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "letöltés" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "adathordozó csere" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurációs fájl: {file}" @@ -8343,6 +8244,10 @@ msgstr "Alapvető funkcionalitás és webes felület %(box_name)s eszközére" msgid " Home" msgstr " Kezdőlap" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Kezdőlap" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Alkalmazások" @@ -8639,6 +8544,76 @@ msgstr "befejezettségi szint: %(percentage)s%%" msgid "Gujarati" msgstr "Gudzsaráti" +#, fuzzy +#~| msgid "Specified directory does not exist." +#~ msgid "User does not exist" +#~ msgstr "A megadott könyvtár nem létezik." + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Letiltva" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "kábel csatlakoztatva" + +#, fuzzy +#~| msgid "Deleted selected snapshots" +#~ msgid "Delete selected" +#~ msgstr "Kiválasztott pillanatképek törölve" + +#, fuzzy +#~| msgid "New Backup" +#~ msgid "New value" +#~ msgstr "Új biztonsági másolat" + +#, fuzzy +#~| msgid "Path is not a directory." +#~ msgid "You do not have a home directory." +#~ msgstr "Az elérési út nem könyvtár." + +#, fuzzy +#~| msgid "Updated media directory" +#~ msgid "Create home directory" +#~ msgstr "Médiakönyvtár frissítve" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "Jelenlegi állapot:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Domain név beállítva" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Tanúsítvány állapot" + +#, fuzzy +#~| msgid "Private repository" +#~ msgid "Private key path" +#~ msgstr "Privát tároló" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Sérülés engedélyezése" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Letiltva" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Nem lehet törölni a rendszer egyetlen rendszergazdáját." diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index 3618cc4e2..d784010c2 100644 --- a/plinth/locale/id/LC_MESSAGES/django.po +++ b/plinth/locale/id/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (FreedomBox)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-06-24 00:42+0000\n" "Last-Translator: Reza Almanda \n" "Language-Team: Indonesian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1026,15 +1027,15 @@ msgstr "" "mengakses aplikasi. Semua pengguna dengan akses dapat menggunakan semua " "perpustakaan." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Gunakan perpustakaan e-book Calibre" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "kaliber" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "Perpustakaan e-book" @@ -1108,7 +1109,7 @@ msgstr "{name} dihapus." msgid "Could not delete {name}: {error}" msgstr "Tidak dapat menghapus {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1121,7 +1122,7 @@ msgstr "" "banyak fungsi lanjutan yang biasanya tidak diperlukan. Terminal berbasis web " "untuk operasi konsol juga tersedia ." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1133,7 +1134,7 @@ msgstr "" "port firewall kustom dan jaringan canggih seperti manajemen ikatan, bridging " "dan VLAN." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1142,7 +1143,7 @@ msgstr "" "Itu dapat diakses oleh pengguna apa pun pada " "{box_name} milik kelompok admin." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1150,12 +1151,12 @@ msgstr "" "Kokpit mengharuskan Anda mengaksesnya melalui nama domain. Itu tidak akan " "berfungsi ketika diakses menggunakan alamat IP sebagai bagian dari URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Kokpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Administrasi Server" @@ -1320,7 +1321,7 @@ msgstr "Menampilkan aplikasi dan fitur canggih" msgid "Hiding advanced apps and features" msgstr "Menyembunyikan aplikasi dan fitur canggih" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1332,7 +1333,7 @@ msgstr "" "dan server komunikasi lainnya dapat menggunakannya untuk menetapkan " "panggilan antar pihak yang tidak dapat terhubung satu sama lain." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as ejabberd memerlukan dikonfigurasi dengan rincian yang " "disediakan disini." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "Helper VoIP" @@ -1378,7 +1379,7 @@ msgstr "Gunakan URL berikut untuk mengkonfigurasi server komunikasi Anda:" msgid "Use the following shared authentication secret:" msgstr "Gunakan rahasia otentikasi bersama berikut:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1386,11 +1387,11 @@ msgstr "" "Network Time Server adalah program yang memelihara waktu sistem dalam " "sinkronisasi dengan server di Internet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Tanggal & Hari" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Waktu disinkronkan ke server NTP" @@ -1419,11 +1420,11 @@ msgstr "Kesalahan pengaturan zona waktu: {exception}" msgid "Time zone set" msgstr "Set zona waktu" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge adalah klien BitTorrent yang menampilkan UI Web." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1431,17 +1432,17 @@ msgstr "" "Kata sandi default adalah 'Deluge', tetapi Anda harus masuk dan mengubahnya " "segera setelah mengaktifkan layanan ini." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Unduh file menggunakan aplikasi BitTorrent" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Membanjiri" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "Klien Web BitTorrent" @@ -1467,18 +1468,18 @@ msgid "Diagnostics" msgstr "Diagnosa" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "LULUS" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "gagal" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "kesalahan" @@ -1570,7 +1571,7 @@ msgstr "Hasil" msgid "Diagnostic Test" msgstr "Tes Diagnostik" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1578,12 +1579,12 @@ msgstr "" "Diaspora * adalah jejaring sosial yang terdesentralisasi di mana Anda dapat " "menyimpan dan mengontrol data Anda sendiri." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "Diaspora *" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Jejaring Sosial Federasi" @@ -1644,7 +1645,7 @@ msgstr "Pendaftaran Pengguna Diaktifkan" msgid "User registrations disabled" msgstr "Pendaftaran Pengguna dinonaktifkan" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1656,7 +1657,7 @@ msgstr "" "internet. Ini akan mencegah orang lain menemukan layanan yang disediakan " "oleh {box_name} ini." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1674,11 +1675,11 @@ msgstr "" "jika seseorang dari Internet meminta nama DNS Anda, mereka akan mendapatkan " "Tanggapan dengan alamat IP Anda saat ini." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Klien DNS Dinamis" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Nama Domain Dinamis" @@ -1916,7 +1917,7 @@ msgstr "Konfigurasikan DNS Dinamis" msgid "Dynamic DNS Status" msgstr "Status Dynamic DNS" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1924,7 +1925,7 @@ msgstr "" "XMPP adalah protokol komunikasi terbuka dan standar. Di sini Anda dapat " "menjalankan dan mengkonfigurasi server XMPP Anda, yang disebut Ejabberd." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web clientKlien XMPP. Saat diaktifkan, ejabberd dapat diakses " "oleh pengguna dengan sebuah {box_name} login." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn atau konfigurasikan server " "eksternal." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "Ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Server obrolan" @@ -2080,52 +2081,20 @@ msgstr "Server obrolan" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Kesalahan pengaturan nama domain: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -#, fuzzy -#| msgid "Directory does not exist." -msgid "User does not exist" -msgstr "Direktori ini tidak ada." - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "unavailable" @@ -2154,18 +2123,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Tidak sertifikat" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Masukkan sebuah nama pengguna yang valid." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Masukkan sebuah nama pengguna yang valid." + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domain" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Kelola Perpustakaan" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Aktifkan" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Non-Aktifkan" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2184,187 +2198,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Kelola Perpustakaan" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Non-Aktifkan" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "Enable PageKite" -msgid "Enable selected" -msgstr "Aktifkan PageKite" +#| msgid "Enabled" +msgid "Enable" +msgstr "Aktifkan" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Deleted selected snapshots" -msgid "Delete selected" -msgstr "Menghapus snapshot yang dipilih" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Buat cadangan baru" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Tambah" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domain" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Memperbarui" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Kelola Snapshot" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Tipe Layanan" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "Buat Repositori" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "Status saat ini:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Set nama domain" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Status Sertifikat" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Private repository" -msgid "Private key path" -msgstr "Penyimpanan Pribadi" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Beranda" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domain" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Aktifkan kerusakan" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Terjadi kesalahan selama konfigurasi." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Non-Aktifkan" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2375,7 +2285,7 @@ msgstr "" "masuk dan keluar pada {box_name} Anda. Menjaga firewall diaktifkan dan " "dikonfigurasi dengan benar mengurangi risiko ancaman keamanan dari Internet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Firewall" @@ -2412,19 +2322,6 @@ msgstr "" msgid "Service/Port" msgstr "Layanan/Port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Aktifkan" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Non-Aktifkan" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Diizinkan" @@ -2510,7 +2407,7 @@ msgstr "Jalankan Pengaturan" msgid "Setup Complete" msgstr "Pengaturan Selesai" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2528,7 +2425,7 @@ msgstr "" "beberapa klien grafis yang tersedia. Dan Anda dapat membagikan kode Anda " "dengan orang-orang di seluruh dunia." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2536,15 +2433,15 @@ msgstr "" "Untuk mempelajari lebih lanjut tentang cara menggunakan git kunjungi tutorial git ." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Akses baca-tulis ke repositori git" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Hosting Git Sederhana" @@ -2971,7 +2868,7 @@ msgstr "Tentang {box_name}" msgid "{box_name} Manual" msgstr "Panduan {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2983,7 +2880,7 @@ msgstr "" "memberikan anonimitas dengan mengirimkan lalu lintas terenkripsi melalui " "jaringan yang dikelola sukarela yang didistribusikan di seluruh dunia." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -2991,7 +2888,7 @@ msgstr "" "Temukan informasi lebih lanjut tentang i2p pada proyek mereka, Halaman Beranda." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2999,19 +2896,19 @@ msgstr "" "Kunjungan pertama ke antarmuka web yang disediakan akan memulai proses " "konfigurasi." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Kelola aplikasi I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2p" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Jaringan Anonimitas" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2p proxy" @@ -3056,7 +2953,7 @@ msgstr "" "to-peer. Unduh file dengan menambahkan torrents atau buat torrent baru untuk " "berbagi file." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3066,7 +2963,7 @@ msgstr "" "bahasa markup ringan, termasuk Markdown, dan fungsionalitas blogging umum " "seperti komentar dan umpan RSS." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3080,15 +2977,15 @@ msgstr "" "\"{users_url}\">Konfigurasi Pengguna, Anda dapat mengubah izin ini atau " "menambahkan pengguna baru." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "Ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki dan Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Lihat dan edit aplikasi Wiki" @@ -3167,11 +3064,11 @@ msgstr "{title} dihapus." msgid "Could not delete {title}: {error}" msgstr "Tidak dapat menghapus {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "Infinoted adalah server untuk gobby, editor teks kolaboratif." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3182,11 +3079,11 @@ msgstr "" "a>, desktop client dan instal. Kemudian mulai gobby dan pilih \"Hubungkan ke " "Server\" dan masukkan nama domain {box_name}." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "Menginfisi" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Server Gobby" @@ -3207,7 +3104,7 @@ msgstr "" "Mulai gobby dan pilih \"Hubungkan ke Server\" dan masukkan nama domain " "{box_name} Anda." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3215,11 +3112,11 @@ msgstr "" "JSXC adalah klien web untuk XMPP. Biasanya digunakan dengan server XMPP yang " "berjalan secara lokal." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "Jsxc" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Obrolan Klien" @@ -3228,7 +3125,7 @@ msgstr "Obrolan Klien" msgid "JavaScript license information" msgstr "Informasi Lisensi JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3244,7 +3141,7 @@ msgstr "" "pengguna adalah pemilik sebuah domain ke Let's Encrypt, sebuah otoritas " "sertifikat (CA)." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3257,15 +3154,15 @@ msgstr "" "repository/\">Perjanjian Pelanggan Let's Encrypt sebelum menggunakan " "layanan ini." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Sertifikat" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "Tidak dapat menguji: Tidak ada domain yang dikonfigurasi." @@ -3370,7 +3267,7 @@ msgstr "Sertifikat berhasil dihapus untuk domain {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Gagal menghapus sertifikat untuk domain {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3387,7 +3284,7 @@ msgstr "" "Pengguna pada server matriks tertentu dapat berkomunikasi dengan pengguna di " "semua server matriks lainnya melalui Federation." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3397,7 +3294,7 @@ msgstr "" "Pasang aplikasi Coturn atau konfigurasikan " "server eksternal." -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Sinaps Matrix" @@ -3474,7 +3371,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3482,7 +3379,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3491,18 +3388,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3584,7 +3481,7 @@ msgstr "" msgid "Server URL updated" msgstr "URL Server diperbarui" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3593,11 +3490,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3663,7 +3560,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3674,15 +3571,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3722,36 +3619,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3763,7 +3660,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3775,7 +3672,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3786,7 +3683,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3908,24 +3805,24 @@ msgstr "Publikasikan kunci ke keyserver." msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Pesan Suara" @@ -3976,23 +3873,23 @@ msgstr "Semua aplikasi web" msgid "Services" msgstr "Layanan" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Jaringan" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gunakan DNSSEC pada IPv{kind}" @@ -4472,6 +4369,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4909,7 +4811,7 @@ msgstr "generik" msgid "TUN or TAP interface" msgstr "Antarmuka TUN atau TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -4998,7 +4900,7 @@ msgstr "Koneksi {name} dihapus." msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5009,20 +4911,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Sambungkan ke layanan VPN" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Jaringan Privat Virtual" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5086,7 +4988,7 @@ msgstr "" msgid "Download my profile" msgstr "Unduh profil saya" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5095,33 +4997,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "ISP Anda membatasi koneksi masuk." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5130,15 +5032,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Visibilitas Publik" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "Domain PageKite" @@ -5274,25 +5176,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Performa" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" @@ -5355,14 +5257,14 @@ msgstr "" msgid "Shut Down Now" msgstr "Matikan Sekarang" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5372,20 +5274,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Proksi Web" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Akses {url} dengan proksi {proxy} pada tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5396,7 +5298,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "Klien IRC" @@ -5416,7 +5318,7 @@ msgstr "Klien IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5426,19 +5328,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5505,7 +5407,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5513,7 +5415,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5522,7 +5424,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5532,17 +5434,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "Klien Email" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5551,31 +5453,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Penyimpanan Berkas Jaringan" @@ -5695,27 +5597,27 @@ msgstr "Bagikan dinonaktifkan." msgid "Error disabling share: {error_message}" msgstr "Kesalahan pemasangan aplikasi: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Jelajahi web" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Pencarian Web" @@ -5870,11 +5772,11 @@ msgstr "" msgid "Updated security configuration" msgstr "Konfigurasi keamanan diperbarui" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli memungkinkan Anda untuk menyimpan dan berbagi bookmark." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5882,22 +5784,22 @@ msgstr "" "Catatan Shaarli hanya mendukung satu akun pengguna, yang perlu Anda siapkan " "pada kunjungan awal." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Bookmark" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5906,17 +5808,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Proksi Socks5" @@ -6047,14 +5949,14 @@ msgstr "Sunting Bagikan" msgid "Share deleted." msgstr "Bagikan dihapus." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6062,14 +5964,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Penyimpanan Snapshot" @@ -6265,7 +6167,7 @@ msgstr "Sistem harus dimulai ulang untuk menyelesaikan rollback." msgid "Rollback to Snapshot" msgstr "Rollback ke Snapshot" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6273,7 +6175,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Server Secure Shell (SSH)" @@ -6318,7 +6220,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6326,7 +6228,7 @@ msgstr "" msgid "Login" msgstr "Masuk" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6334,104 +6236,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Penyimpanan" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Operasi gagal." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Operasi telah dibatalkan." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Perangkat belum terpasang." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6545,7 +6447,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6553,7 +6455,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6565,20 +6467,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6586,7 +6488,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6594,11 +6496,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6635,7 +6537,7 @@ msgstr "" msgid "Remove" msgstr "Hapus" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6644,40 +6546,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6807,58 +6709,54 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6867,12 +6765,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6880,34 +6778,41 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Memperbarui" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update URL" msgid "Updates" msgstr "Perbaharui URL" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" msgstr "FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "Pembaruan distribusi dimulai" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7085,14 +6990,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7100,15 +7005,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7340,18 +7245,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7663,7 +7568,7 @@ msgstr "Hapus Koneksi" msgid "Server deleted." msgstr "{name} dihapus." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7672,7 +7577,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7681,28 +7586,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Address" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -7720,7 +7625,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7733,7 +7638,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7741,11 +7646,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7779,23 +7684,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Galat saat pemasangan" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "memasang" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "mengunduh" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7857,6 +7762,10 @@ msgstr "Fungsionalitas inti dan antarmuka web untuk %(box_name)s" msgid " Home" msgstr " Beranda" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Beranda" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Aplikasi" @@ -8137,6 +8046,66 @@ msgstr "%(percentage)s %% selesai" msgid "Gujarati" msgstr "Bahasa Gujarat" +#, fuzzy +#~| msgid "Directory does not exist." +#~ msgid "User does not exist" +#~ msgstr "Direktori ini tidak ada." + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Non-Aktifkan" + +#, fuzzy +#~| msgid "Enable PageKite" +#~ msgid "Enable selected" +#~ msgstr "Aktifkan PageKite" + +#, fuzzy +#~| msgid "Deleted selected snapshots" +#~ msgid "Delete selected" +#~ msgstr "Menghapus snapshot yang dipilih" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "Buat Repositori" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "Status saat ini:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Set nama domain" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Status Sertifikat" + +#, fuzzy +#~| msgid "Private repository" +#~ msgid "Private key path" +#~ msgstr "Penyimpanan Pribadi" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Aktifkan kerusakan" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Non-Aktifkan" + #~ msgid "Past Vulnerabilities" #~ msgstr "Kerentanan Masa Lalu" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index a2f0b4fb2..3fc586724 100644 --- a/plinth/locale/it/LC_MESSAGES/django.po +++ b/plinth/locale/it/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-09-21 20:38+0000\n" "Last-Translator: Dietmar \n" "Language-Team: Italian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1104,7 +1105,7 @@ msgstr "{name} cancellato." msgid "Could not delete {name}: {error}" msgstr "Non è stato possibile cancellare {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1118,7 +1119,7 @@ msgstr "" "richieste. É disponibile inoltre un terminale web per le operazioni da " "console." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1126,7 +1127,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1135,7 +1136,7 @@ msgstr "" "È accessibile da qualsiasi utente su {box_name} " "appartenente al gruppo admin." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1143,12 +1144,12 @@ msgstr "" "Cockpit richiede l'accesso attraverso un nome di dominio. Non funzionerà " "quando si accede utilizzando un indirizzo IP come parte dell'URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Amministrazione Server" @@ -1321,7 +1322,7 @@ msgstr "Visualizzazione di applicazioni e funzionalità avanzate" msgid "Hiding advanced apps and features" msgstr "Nascondere applicazioni e funzionalità avanzate" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1329,7 +1330,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client da ogni utente con un login " "{box_name} ." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Server Chat" @@ -2073,48 +2074,18 @@ msgstr "Server e-mail" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "Configurazione del nome di dominio di Postfix" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -2139,17 +2110,62 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Ha un certificato TLS" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Inserisci un nome utente valido." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Inserisci un nome utente valido." + +#: plinth/modules/email_server/forms.py:22 #, fuzzy msgid "domain" msgstr "Dominio" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Gestire le librerie" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Abilitato" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Disabilitato" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2166,162 +2182,79 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Gestire le librerie" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" -msgstr "Disattivare selezionato" +#: plinth/modules/email_server/templates/email_alias.html:24 +#, fuzzy +#| msgid "Disabled" +msgid "Disable" +msgstr "Disabilitato" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "Attiva selezionato" - -#: plinth/modules/email_server/templates/email_alias.html:29 #, fuzzy -msgid "Delete selected" -msgstr "Istantanee selezionate cancellate" +#| msgid "Enabled" +msgid "Enable" +msgstr "Abilitato" -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "Creare un nuovo alias e-mail" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "Nuovo valore" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "Avviso di servizio" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "Creare la home directory" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "Mantenere le impostazioni attuali" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "Usare Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "Nome comune" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "Percorso del certificato" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "Percorso chiave privata" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Sicurezza" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "Domini" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Manage Spam" +msgstr "Gestire le librerie" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "Avviso di servizio" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" -msgstr "Alias abilitati" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Si è verificato un errore durante la configurazione." -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "Alias disabilitati" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Impostazioni invariate" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2333,7 +2266,7 @@ msgstr "" "adeguatamente configurato riduce i rischi di attacchi informatici dalla rete " "Internet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Firewall" @@ -2370,19 +2303,6 @@ msgstr "" msgid "Service/Port" msgstr "Servizio/Porta" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Abilitato" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Disabilitato" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Permesso" @@ -2466,7 +2386,7 @@ msgstr "Avvia Configurazione" msgid "Setup Complete" msgstr "Configurazione Completata" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2485,7 +2405,7 @@ msgstr "" "grafici disponibili. E puoi condividere il tuo codice con persone in tutto " "il mondo." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2493,15 +2413,15 @@ msgstr "" "Per saperne di più su come usare Git visita Git tutorial." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Accesso in lettura e scrittura ai repository Git" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Semplice Git Hosting" @@ -2943,7 +2863,7 @@ msgstr "Sul {box_name}" msgid "{box_name} Manual" msgstr "Manuale {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 #, fuzzy msgid "" "The Invisible Internet Project is an anonymous network layer intended to " @@ -2956,7 +2876,7 @@ msgstr "" "l'anonimato inviando traffico criptato attraverso una rete di volontari " "distribuiti in tutto il mondo." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -2964,7 +2884,7 @@ msgstr "" "Si possono trovare maggiori informazioni su I2P sul sito web del loro progetto." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 #, fuzzy msgid "" "The first visit to the provided web interface will initiate the " @@ -2973,20 +2893,20 @@ msgstr "" "La prima visita all'interfaccia web fornita inizierà il processo di " "configurazione." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Gestione dell'applicazione I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 #, fuzzy msgid "Anonymity Network" msgstr "Rete di anonimato" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "Proxy I2P" @@ -3034,7 +2954,7 @@ msgstr "" "peer-to-peer. Scaricate i file aggiungendo torrenti o create un nuovo " "torrent per condividere un file." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3044,7 +2964,7 @@ msgstr "" "markup di linguaggio leggeri, incluso Markdown, e comuni funzionalità di " "blogging come commenti e feed RSS." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3058,15 +2978,15 @@ msgstr "" "\"{users_url}\">Configurazione Utente è possibile cambiare questi " "permessi o aggiungere nuovi utenti." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki e Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Vedi e modifica le applicazioni wiki" @@ -3145,12 +3065,12 @@ msgstr "{title} cancellato." msgid "Could not delete {title}: {error}" msgstr "Non è stato possibile cancellare {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 #, fuzzy msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted è un server per Gobby, un editore testuale comunitario." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, fuzzy, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3161,11 +3081,11 @@ msgstr "" "desktop e installarlo. Dopo avviare Hobby e seleziona \"Connect to Server\" " "e entrare nel tuo nome di dominio {box_name}." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby Server" @@ -3186,7 +3106,7 @@ msgstr "" "Avvia Bobby e selezione \"Connect to Server\", e entra nel nome di dominio " "del tuo {box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3194,11 +3114,11 @@ msgstr "" "JSXC è un client web per XMPP. Tipicamente viene usato con un server XMPP in " "esecuzione nella rete locale." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Client" @@ -3207,7 +3127,7 @@ msgstr "Client" msgid "JavaScript license information" msgstr "Informazioni sulla licenza JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3222,7 +3142,7 @@ msgstr "" "disposizione. Ci riesce provando esso stesso di essere il proprietario del " "dominio a Let's Encrypt, un'autorità di certificazione (CA)." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3235,15 +3155,15 @@ msgstr "" "letsencrypt.org/repository/\"> i termini dell'accordo dell'abbonato Let's " "Encrypt prima utilizzare questo servizio." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Certificati" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3349,7 +3269,7 @@ msgstr "Certificato cancellato correttamente per il dominio {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Cancellazione certificato fallita per il dominio {domain}:{error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3366,14 +3286,14 @@ msgstr "" "Gli utenti di un certo server Matrix possono comunicare con gli altri utenti " "attestati su tutti gli altri server Matrix tramite federazione." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3465,7 +3385,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3478,7 +3398,7 @@ msgstr "" "stile wiki, per prendere note o per collaborare con degli amici su dei " "progetti." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3493,7 +3413,7 @@ msgstr "" "MediaWiki, andando nella pagina Speciale:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3501,12 +3421,12 @@ msgstr "" "Chiunque con un collegamento a questo wiki può leggerlo. Solo gli utenti " "autenticati possono apportare modifiche ai contenuti." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3601,7 +3521,7 @@ msgstr "Tema predefinito modificato" msgid "Server URL updated" msgstr "URL del server aggiornato" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3614,11 +3534,11 @@ msgstr "" "porta predefinita (30000). Per connettersi al server, è necessario un client Minetest." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Block Sandbox" @@ -3694,7 +3614,7 @@ msgstr "Configurazione PVP aggiornata" msgid "Damage configuration updated" msgstr "Configurazione \"danni\" abilitata" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3705,15 +3625,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3753,36 +3673,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Scarica file usando applicazioni eDonkey" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 #, fuzzy msgid "Peer-to-peer File Sharing" msgstr "Condivisione File" @@ -3795,7 +3715,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 #, fuzzy msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " @@ -3817,7 +3737,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\"> Monkeysphere SSH documentation " "per maggiori dettagli." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3835,7 +3755,7 @@ msgstr "" "software disponibili sul sito di Monkeysphere ." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3960,7 +3880,7 @@ msgstr "Chiave pubblicata nel keyserver." msgid "Error occurred while publishing key." msgstr "Errore sorto durante la pubblicazione della chiave." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3968,7 +3888,7 @@ msgstr "" "Mumble è un software di chat vocale ad alta qualità, a bassa latenza, " "cifrato e open source." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3978,11 +3898,11 @@ msgstr "" "64738 Sono disponibili dei client da " "connettere a Mumble dai tuoi dispositivi desktop e android." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Voice Chat" @@ -4033,23 +3953,23 @@ msgstr "" msgid "Services" msgstr "Servizi" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Reti" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilizzo DNSSEC su IPv{kind}" @@ -4554,6 +4474,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Questa connessione non è attiva." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Sicurezza" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5004,7 +4929,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5095,7 +5020,7 @@ msgstr "Connessione {name} cancellata." msgid "Failed to delete connection: Connection not found." msgstr "Cancellazione connessione fallita: connessione non trovata." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5112,20 +5037,20 @@ msgstr "" "accedere al resto della rete Internet via {box_name} per una maggiore " "sicurezza e anonimità." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Rete virtuale privata" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5196,7 +5121,7 @@ msgstr "" msgid "Download my profile" msgstr "Scarica il mio profilo" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5209,18 +5134,18 @@ msgstr "" "il tuo {box_name} non è raggiungibile dall'esterno. Questo include le " "situazioni seguenti:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} è valle di un firewall ristretto." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} è connesso ad un router (wireless) di cui non hai il controllo." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5228,7 +5153,7 @@ msgstr "" "Il tuo ISP non ti assegna un IP pubblico ma ti fornisce una connessione " "tramite NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5236,11 +5161,11 @@ msgstr "" "Il tuo ISP non ti fornisce un IP statico e il tuo IP cambia ogni volta che " "ti connetti a Internet." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Il tuo ISP limita le connessioni in entrata." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5259,15 +5184,15 @@ msgstr "" "pagekite, per esempio pagekite.net. In " "futuro potrebbe essere usare il {box_name} del tuo amico." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Visibilità Pubblica" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "Dominio PageKite" @@ -5411,25 +5336,25 @@ msgstr "" "Vedi le istruzioni della configurazione del client SSH" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Monitoraggio del sistema" @@ -5502,7 +5427,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Spegni Ora" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5513,7 +5438,7 @@ msgstr "" "header HTTP, controllando gli accessi, rimuovendo pubblicità e altra odiosa " "spazzatura dell'Internet. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5528,20 +5453,20 @@ msgstr "" "documentazione su http://config." "Privoxy.org/ o http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accesso {url} con proxy {proxy} su tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5558,7 +5483,7 @@ msgstr "" "possibile usare uno o più client Quassel desktop o mobile, per connettersi e " "disconnettersi su di esso." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktop e mobile." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "Client IRC" @@ -5582,7 +5507,7 @@ msgstr "Client IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5597,19 +5522,19 @@ msgstr "" "un'applicazione client supportata. È possibile accedere a Radicale da " "ogni utente con un profilo {box_name}." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Calendario e Rubrica" @@ -5685,7 +5610,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5693,7 +5618,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5702,7 +5627,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5712,17 +5637,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5731,31 +5656,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Stoccaggio dei file di rete" @@ -5863,27 +5788,27 @@ msgstr "Share disabilitato." msgid "Error disabling share: {error_message}" msgstr "Errore installazione applicazione: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -6038,32 +5963,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6072,17 +5997,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -6211,14 +6136,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6226,14 +6151,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -6424,7 +6349,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6432,7 +6357,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6473,7 +6398,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6481,7 +6406,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6489,105 +6414,105 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 #, fuzzy msgid "The device is already unmounting." msgstr "Il dispositivo sta già smontando." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Il dispositivo è già montato." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6701,7 +6626,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6709,7 +6634,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6721,20 +6646,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6742,7 +6667,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6750,11 +6675,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6789,7 +6714,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6798,40 +6723,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6959,37 +6884,33 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Impostazioni invariate" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission è un client BitTorrent che può essere gestito da Web UI." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any utente con un account su {box_name}." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -7020,12 +6941,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7033,30 +6954,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Aggiornamenti" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox aggiornato" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7227,14 +7155,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7242,15 +7170,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7476,18 +7404,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7781,7 +7709,7 @@ msgstr "Cancella Connessione a server" msgid "Server deleted." msgstr "Server cancellato." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7790,7 +7718,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7799,26 +7727,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "Sito web e blog" @@ -7832,7 +7760,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7845,7 +7773,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7853,11 +7781,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7891,23 +7819,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7973,6 +7901,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" @@ -8248,6 +8180,43 @@ msgstr "%(percentage)s%% completata" msgid "Gujarati" msgstr "" +#~ msgid "Disable selected" +#~ msgstr "Disattivare selezionato" + +#~ msgid "Enable selected" +#~ msgstr "Attiva selezionato" + +#, fuzzy +#~ msgid "Delete selected" +#~ msgstr "Istantanee selezionate cancellate" + +#~ msgid "New value" +#~ msgstr "Nuovo valore" + +#~ msgid "Create home directory" +#~ msgstr "Creare la home directory" + +#~ msgid "Keep current settings" +#~ msgstr "Mantenere le impostazioni attuali" + +#~ msgid "Use Let's Encrypt" +#~ msgstr "Usare Let's Encrypt" + +#~ msgid "Common name" +#~ msgstr "Nome comune" + +#~ msgid "Certificate path" +#~ msgstr "Percorso del certificato" + +#~ msgid "Private key path" +#~ msgstr "Percorso chiave privata" + +#~ msgid "Enabled aliases" +#~ msgstr "Alias abilitati" + +#~ msgid "Disabled aliases" +#~ msgstr "Alias disabilitati" + #~ msgid "Message Archive Management enabled" #~ msgstr "Gestione Archivio Messaggi abilitata" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index 78b57731e..34629a09d 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-05-20 12:32+0000\n" "Last-Translator: Jacque Fresco \n" "Language-Team: Japanese calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1034,7 +1035,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1043,7 +1044,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1051,25 +1052,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1214,7 +1215,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1222,7 +1223,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1866,48 +1867,18 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1932,16 +1903,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1958,159 +1968,69 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2118,7 +2038,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2150,19 +2070,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2238,7 +2145,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2249,21 +2156,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2624,7 +2531,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2632,31 +2539,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2693,14 +2600,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2709,15 +2616,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2794,11 +2701,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2806,11 +2713,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2829,17 +2736,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2848,7 +2755,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2858,7 +2765,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2866,15 +2773,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2975,7 +2882,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2985,14 +2892,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3063,7 +2970,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3071,7 +2978,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3080,18 +2987,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3173,7 +3080,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3182,11 +3089,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3252,7 +3159,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3263,15 +3170,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3311,36 +3218,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3352,7 +3259,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3364,7 +3271,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3375,7 +3282,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3497,24 +3404,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3565,23 +3472,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4061,6 +3968,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4498,7 +4410,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4587,7 +4499,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4598,20 +4510,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4675,7 +4587,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4684,33 +4596,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4719,15 +4631,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4861,25 +4773,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4940,14 +4852,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4957,20 +4869,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4981,7 +4893,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5001,7 +4913,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5011,19 +4923,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5090,7 +5002,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5098,7 +5010,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5107,7 +5019,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5117,17 +5029,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5136,31 +5048,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5268,27 +5180,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5443,32 +5355,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5477,17 +5389,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5616,14 +5528,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5631,14 +5543,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5828,7 +5740,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5836,7 +5748,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5877,7 +5789,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5885,7 +5797,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5893,104 +5805,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6104,7 +6016,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6112,7 +6024,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6124,20 +6036,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6145,7 +6057,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6153,11 +6065,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6192,7 +6104,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6201,40 +6113,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6360,58 +6272,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6419,12 +6327,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6432,30 +6340,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6621,14 +6536,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6636,15 +6551,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6870,18 +6785,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7175,7 +7090,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7184,7 +7099,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7193,26 +7108,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7226,7 +7141,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7239,7 +7154,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7247,11 +7162,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7285,23 +7200,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7362,6 +7277,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index ac644c8c4..7f84ac8eb 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2020-07-16 16:41+0000\n" "Last-Translator: Yogesh \n" "Language-Team: Kannada calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1034,7 +1035,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1043,7 +1044,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1051,25 +1052,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1214,7 +1215,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1222,7 +1223,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1866,48 +1867,18 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1932,16 +1903,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1958,159 +1968,69 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2118,7 +2038,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2150,19 +2070,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2238,7 +2145,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2249,21 +2156,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2624,7 +2531,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2632,31 +2539,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2693,14 +2600,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2709,15 +2616,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2794,11 +2701,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2806,11 +2713,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2829,17 +2736,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2848,7 +2755,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2858,7 +2765,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2866,15 +2773,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2975,7 +2882,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2985,14 +2892,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3063,7 +2970,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3071,7 +2978,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3080,18 +2987,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3173,7 +3080,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3182,11 +3089,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3252,7 +3159,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3263,15 +3170,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3311,36 +3218,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3352,7 +3259,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3364,7 +3271,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3375,7 +3282,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3497,24 +3404,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3565,23 +3472,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4061,6 +3968,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4498,7 +4410,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4587,7 +4499,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4598,20 +4510,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4675,7 +4587,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4684,33 +4596,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4719,15 +4631,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4861,25 +4773,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4940,14 +4852,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4957,20 +4869,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4981,7 +4893,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5001,7 +4913,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5011,19 +4923,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5090,7 +5002,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5098,7 +5010,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5107,7 +5019,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5117,17 +5029,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5136,31 +5048,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5270,27 +5182,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5445,32 +5357,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5479,17 +5391,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5618,14 +5530,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5633,14 +5545,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5830,7 +5742,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5838,7 +5750,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5879,7 +5791,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5887,7 +5799,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5895,104 +5807,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6106,7 +6018,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6114,7 +6026,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6126,20 +6038,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6147,7 +6059,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6155,11 +6067,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6194,7 +6106,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6203,40 +6115,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6362,58 +6274,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6421,12 +6329,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6434,30 +6342,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6623,14 +6538,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6638,15 +6553,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6872,18 +6787,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7177,7 +7092,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7186,7 +7101,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7195,26 +7110,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7228,7 +7143,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7241,7 +7156,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7249,11 +7164,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7287,23 +7202,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7364,6 +7279,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index 236d4d601..f39571509 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-02-22 10:50+0000\n" "Last-Translator: Kornelijus Tvarijanavičius \n" "Language-Team: Lithuanian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1035,7 +1036,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1044,7 +1045,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1052,25 +1053,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1215,7 +1216,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1223,7 +1224,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1867,48 +1868,18 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1933,16 +1904,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1959,159 +1969,69 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2119,7 +2039,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2151,19 +2071,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2239,7 +2146,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2250,21 +2157,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2625,7 +2532,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2633,31 +2540,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2694,14 +2601,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2710,15 +2617,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2795,11 +2702,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2807,11 +2714,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2830,17 +2737,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2849,7 +2756,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2859,7 +2766,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2867,15 +2774,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2976,7 +2883,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2986,14 +2893,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3064,7 +2971,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3072,7 +2979,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3081,18 +2988,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3174,7 +3081,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3183,11 +3090,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3253,7 +3160,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3264,15 +3171,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3312,36 +3219,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3353,7 +3260,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3365,7 +3272,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3376,7 +3283,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3498,24 +3405,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3566,23 +3473,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4062,6 +3969,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4499,7 +4411,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4588,7 +4500,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4599,20 +4511,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4676,7 +4588,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4685,33 +4597,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4720,15 +4632,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4862,25 +4774,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4941,14 +4853,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4958,20 +4870,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4982,7 +4894,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5002,7 +4914,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5012,19 +4924,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5091,7 +5003,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5099,7 +5011,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5108,7 +5020,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5118,17 +5030,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5137,31 +5049,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5269,27 +5181,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5444,32 +5356,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5478,17 +5390,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5617,14 +5529,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5632,14 +5544,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5829,7 +5741,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5837,7 +5749,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5878,7 +5790,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5886,7 +5798,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5894,104 +5806,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6105,7 +6017,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6113,7 +6025,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6125,20 +6037,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6146,7 +6058,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6154,11 +6066,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6193,7 +6105,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6202,40 +6114,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6361,58 +6273,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6420,12 +6328,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6433,30 +6341,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6622,14 +6537,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6637,15 +6552,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6871,18 +6786,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7176,7 +7091,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7185,7 +7100,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7194,26 +7109,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7227,7 +7142,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7240,7 +7155,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7248,11 +7163,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7286,23 +7201,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7363,6 +7278,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index 709b3ede7..5db6228f9 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-08-19 13:51+0000\n" "Last-Translator: Petter Reinholdtsen \n" "Language-Team: Norwegian Bokmål calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1054,15 +1055,15 @@ msgstr "" "Kun brukere som tilhører calibre-gruppen vil ha tilgang til " "programmet. Alle brukere med tilgang kan bruke alle bibliotekene." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "E-bok-bibliotek" @@ -1141,7 +1142,7 @@ msgstr "Slettet {name}." msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1154,7 +1155,7 @@ msgstr "" "mange avanserte funksjoner som ikke kreves normalt. En nettbasert terminal " "for konsolloperasjoner er også tilgjengelig." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1166,7 +1167,7 @@ msgstr "" "tilpassede brannmursporter og avansert nettverksoppsett som bonding, " "bridging og VLAN-administrasjon." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1175,7 +1176,7 @@ msgstr "" "Den kan brukes av enhver bruker på {box_name} " "som er medlem i admin-gruppen." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1183,12 +1184,12 @@ msgstr "" "Cockpit krever at du når det gjennom et domenenavn. Det fungerer ikke når " "det nås ved bruk av en IP-adresse, eller som del av nettadressen." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Styrhus" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Tjeneradministrasjon" @@ -1352,7 +1353,7 @@ msgstr "Viser avanserte programmer og funksjoner" msgid "Hiding advanced apps and features" msgstr "Viser ikke avanserte programmer og funksjoner" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1364,7 +1365,7 @@ msgstr "" "kommunikasjonstjenere kan bruke det for å etablere en samtale mellom parter " "som ellers ikke ville kunne kontakte hverandre." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse eller ejabberd må " "settes opp med detaljene herfra." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "VoIP-hjelper" @@ -1411,7 +1412,7 @@ msgstr "Bruk følgende nettadresser for å sette opp din kommunikasjonstjener:" msgid "Use the following shared authentication secret:" msgstr "Følgende lagringsenheter er i bruk:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1419,11 +1420,11 @@ msgstr "" "Nettverkstidstjeneren er et program som synkroniserer systemets klokke med " "tjenere på Internettet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Dato og tid" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Tid synkronisert til NTP-tjener" @@ -1452,11 +1453,11 @@ msgstr "Feil ved setting av tidssone: {exception}" msgid "Time zone set" msgstr "Tidssone satt" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge er en BitTorrent-klient som har et Web-grensesnitt." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1464,17 +1465,17 @@ msgstr "" "Standardpassordet er «deluge», men du bør logge inn og endre det umiddelbart " "etter at denne tjenesten er aktivert." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Last ned filer ved bruk av BitTorrent-programmer" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "BitTorrent nett-klient" @@ -1500,14 +1501,14 @@ msgid "Diagnostics" msgstr "Diagnostikk" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 #, fuzzy #| msgid "Quassel" msgid "passed" msgstr "Quassel" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 #, fuzzy #| msgid "Setup failed." @@ -1515,7 +1516,7 @@ msgid "failed" msgstr "Oppsettet mislyktes." #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "feil" @@ -1607,7 +1608,7 @@ msgstr "Resultat" msgid "Diagnostic Test" msgstr "Diagnostikktest" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1615,12 +1616,12 @@ msgstr "" "diaspora* er et desentralisert sosialt nettverk der du kan lagre og " "administrere dine egne data." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Sammenknyttet sosialt nettverk" @@ -1680,7 +1681,7 @@ msgstr "Brukerregistreringer aktivert" msgid "User registrations disabled" msgstr "Brukerregistreringer deaktivert" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1691,7 +1692,7 @@ msgstr "" "eks. hver 24 t), kan det være vanskelig for andre å finne deg på Internett. " "Dette vil hindre andre i å finne tjenester som tilbys av dette {box_name}et." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1708,11 +1709,11 @@ msgstr "" "tjeneren tildele DNS-navnet ditt til den nye IP-en. Hvis noen fra Internett " "ber om ditt DNS-navn, vil de da få svar med din gjeldende IP-adresse." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Dynamisk DNS-klient" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Dynamisk domenenavn" @@ -1950,7 +1951,7 @@ msgstr "Konfigurer dynamisk DNS" msgid "Dynamic DNS Status" msgstr "Dynamisk DNS-status" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1958,7 +1959,7 @@ msgstr "" "XMPP er en åpen og standardisert kommunikasjonsprotokoll. Her kan du kjøre " "og konfigurere din XMPP-tjener, kalt ejabberd." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web clientbruker med innlogging på " "{box_name}." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Nettprat-tjener" @@ -2112,52 +2113,20 @@ msgstr "Nettprat-tjener" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Feil ved innstilling/setting av domenenavn: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -#, fuzzy -#| msgid "Directory does not exist." -msgid "User does not exist" -msgstr "Mappen finnes ikke." - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Available Domains" @@ -2186,18 +2155,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Sertifikat mangler" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "Ugyldig tjenernavn" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "Ugyldig tjenernavn" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domene" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Håndter biblioteker" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Aktivert" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Deaktivert" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2216,191 +2230,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Håndter biblioteker" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Deaktivert" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "kabel er tilknyttet" +#| msgid "Enabled" +msgid "Enable" +msgstr "Aktivert" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Deleted selected snapshots" -msgid "Delete selected" -msgstr "Slettet alle valgte avbildninger" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Lag ny sikkerhetskopi" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Legg til" -#: plinth/modules/email_server/templates/email_domains.html:19 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Domener" + +#: plinth/modules/email_server/templates/email_server.html:19 #, fuzzy -#| msgid "New Backup" -msgid "New value" -msgstr "Ny sikkerhetskopi" +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Behandle avbildninger" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Oppdater" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Type tjeneste" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Path is not a directory." -msgid "You do not have a home directory." -msgstr "Stien er ikke en katalog." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Updated media directory" -msgid "Create home directory" -msgstr "Oppdatert mediekatalog" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "Nåværende status:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Domenenavn satt" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Sertifikatsstatus" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Private key of this machine" -msgid "Private key path" -msgstr "Privatnøkkel tilhørende denne maskinen" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Hjem" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Sikkerhet" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Domener" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Aktiver skade" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "En feil oppsto under konfigureringen." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Deaktivert" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Oppsett uendret" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2411,7 +2317,7 @@ msgstr "" "utgående nettverkstrafikk på din {box_name}. Å holde en brannmur aktivert og " "riktig konfigurert, reduserer risikoen for sikkerhetstrusler fra Internett." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Brannmur" @@ -2447,19 +2353,6 @@ msgstr "" msgid "Service/Port" msgstr "Tjeneste/Port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Aktivert" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Deaktivert" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Tillatt" @@ -2545,7 +2438,7 @@ msgstr "Gå i gang med oppsett" msgid "Setup Complete" msgstr "Oppsett ferdig" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 #, fuzzy msgid "" "Git is a distributed version-control system for tracking changes in source " @@ -2564,7 +2457,7 @@ msgstr "" "flerfoldige grafiske klienter. Du kan også dele koden med folk rundt omkring " "i verden." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2572,16 +2465,16 @@ msgstr "" "For å lære mer om bruk av Git, besøk Git-veiledningen." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 #, fuzzy msgid "Read-write access to Git repositories" msgstr "Lese- og skrivetilgang til Git-kodelagre" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Enkelt Git-vertsskap" @@ -3036,7 +2929,7 @@ msgstr "Om {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Manual" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3048,7 +2941,7 @@ msgstr "" "anonymitet ved å sende kryptert trafikk gjennom et frivilligdrevet nettverk " "distribuert verden om." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3056,7 +2949,7 @@ msgstr "" "For mer informasjon om I2P, sjekk deres nettside." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -3064,19 +2957,19 @@ msgstr "" "Den første til å besøke det oppsatte nettgrensesnittet vil igangsette " "oppsettsprosessen." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Håndter I2P-program" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Anonymitetsnettverk" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2P-mellomtjener" @@ -3122,7 +3015,7 @@ msgstr "" "likemannsnettverk. Last ned filer ved å legge til torrenter, eller opprett " "en ny torrent for å dele ei fil." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3132,7 +3025,7 @@ msgstr "" "lettvektsoppmerkingsspråk, inkludert Markdown, og vanlige bloggfunksjoner " "som kommentarer og RSS-informasjonskilder." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3146,15 +3039,15 @@ msgstr "" "\"{users_url}\">brukeroppsettet kan du endre disse tilgangene eller " "legge til nye brukere." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki og Blogg" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Vis og rediger wiki-programmer" @@ -3233,11 +3126,11 @@ msgstr "{title} slettet." msgid "Could not delete {title}: {error}" msgstr "Kunne ikke slette {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted er en tjener for Gobby, en samskrivende teksteditor." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3248,11 +3141,11 @@ msgstr "" "skrivebordsklient og installer den. Deretter starter du Gobby og velger " "«Koble til tjener», og skriver inn domenenavnet til din {box_name} ." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby-tjener" @@ -3273,7 +3166,7 @@ msgstr "" "Start Gobby og velge «Koble til tjener», og skriver inn domenenavnet til din " "{box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3281,11 +3174,11 @@ msgstr "" "JSXC er en nettleserklient for XMPP. Typisk brukes den med en XMPP-tjener " "som kjører lokalt." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Nettpratklient" @@ -3294,7 +3187,7 @@ msgstr "Nettpratklient" msgid "JavaScript license information" msgstr "JavaScript lisensinformasjon" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3309,7 +3202,7 @@ msgstr "" "ved at det selv bekrefter eierskapet til et domene overfor " "sertifiseringsinstansen (CA) Let's Encrypt." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3321,15 +3214,15 @@ msgstr "" "les og aksepter Let's " "Encrypt Subscriber Agreement før tjenesten brukes." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Sertifikater" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3434,7 +3327,7 @@ msgstr "Vellykket sletting av sertifikatet for domenet {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Klarte ikke å slette sertifikatet for domenet {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3450,14 +3343,14 @@ msgstr "" "enheter, og krever ikke telefonnumre for å virke. Brukere på en gitt Matrix-" "tjener kan snakke med brukere på alle andre samvirkende Matrix-tjenere." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3549,7 +3442,7 @@ msgstr "" "Matrix Synapse-instanser krever et gyldig TLS-sertifikat. Gå til Let's Encrypt for å skaffe deg det." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3562,7 +3455,7 @@ msgstr "" "lignende nettside, ta noteter, eller samarbeide med andre venner på " "prosjekter." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3576,7 +3469,7 @@ msgstr "" "brukerkontoer fra MediaWiki, ved å gå til Special:CreateAccount-siden." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3584,12 +3477,12 @@ msgstr "" "Alle med en lenke til denne wiki-en kan lese den. Kun innloggede brukere kan " "endre innholdet." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3683,7 +3576,7 @@ msgstr "Forvalgt drakt endret" msgid "Server URL updated" msgstr "Tjener slettet." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3696,11 +3589,11 @@ msgstr "" "porten (30000). For å koble til tjeneren trengs en Minetest-klient." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Block-sandkassen" @@ -3771,7 +3664,7 @@ msgstr "PVP-oppsett oppdatert" msgid "Damage configuration updated" msgstr "Skadeoppsett oppdatert" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3789,15 +3682,15 @@ msgstr "" "smartelefoner, fjernsynsapparater, og spillkonsoller (som PS3 og Xbox 360) " "eller programmer som totem og Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Media-strømmetjener" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 #, fuzzy msgid "Simple Media Server" msgstr "Enkel mediatjener" @@ -3843,7 +3736,7 @@ msgstr "Angitt mappe finnes ikke" msgid "Updated media directory" msgstr "Oppdatert mediekatalog" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3853,7 +3746,7 @@ msgstr "" "store filer. Det kan delta i flere maskin-til-maskin -nettverk, inkludert " "eDonkey, Kademlia, Overnet, BitTorrent og DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3864,22 +3757,22 @@ msgstr "" "gjennom en av de egne mobil- eller skrivebords-grenseflatene, eller et " "telnet-grensesnitt. Se manualen." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "På {box_name}, finner du nedlastede filer i mappen /var/lib/mldonkey/." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Last ned filer ved bruk av eDonkey-programmer" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Maskin til maskin-fildeling" @@ -3891,7 +3784,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3911,7 +3804,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\"> Monkeysphere SSH documentation for flere detaljer." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3929,7 +3822,7 @@ msgstr "" "brukeren å installere noe programvare som er tilgjengelig på Monkeysphere-nettsiden ." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4053,7 +3946,7 @@ msgstr "Publisert nøkkel til nøkkeltjener." msgid "Error occurred while publishing key." msgstr "Feil oppstått under utlegging av nøkkel." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4061,7 +3954,7 @@ msgstr "" "Mumble er en åpen kildekode, rask, kryptert, høy kvalitets programvare for " "nettprat." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4071,11 +3964,11 @@ msgstr "" "\"http://mumble.info\">Klienter for å koble til Mumble når skrivebordet " "og/eller Android-enheter er tilgjengelige." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Talenettprat" @@ -4145,7 +4038,7 @@ msgstr "Alle nettprogrammer" msgid "Services" msgstr "Tjeneste" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4153,7 +4046,7 @@ msgstr "" "Sett opp nettverksenheter. Sett opp Internett via Ethernet, Wi-Fi eller " "PPPoE. Del den tilkoblingen med andre enheter på nettverket." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4161,11 +4054,11 @@ msgstr "" "Enheter administrert gjennom andre metoder kan være utilgjengelige for " "oppsett her." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Nettverk" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruker DNSSEC på IPv{kind}" @@ -4682,6 +4575,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Denne forbindelsen er ikke aktiv." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Sikkerhet" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5194,7 +5092,7 @@ msgstr "Generisk" msgid "TUN or TAP interface" msgstr "Nettverksgrensesnitt" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5293,7 +5191,7 @@ msgstr "Tilkobling {name} slettet." msgid "Failed to delete connection: Connection not found." msgstr "Kunne ikke slette tilkobling: Tilkobling ikke funnet." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5310,22 +5208,22 @@ msgstr "" "Du kan også få tilgang til resten av Internettet via {box_name} med utvidet " "sikkerhet og anonymitet." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "Oppkoblingstype" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Virtuelt privat nettverk" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5398,7 +5296,7 @@ msgstr "" msgid "Download my profile" msgstr "Last ned min profil" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5411,17 +5309,17 @@ msgstr "" "{box_name}-tjenester ikke nås fra resten av nettet. Dette omfatter de " "følgende situasjoner:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} er bak en begrensende brannmur." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{box_name} er koblet til en (trådløs) ruter du ikke kan kontrollere." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5429,7 +5327,7 @@ msgstr "" "Din Internett-leverandør gir deg ikke en ekstern IP-adresse, og gir i stedet " "en NAT-et Internett-tilkobling." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5437,11 +5335,11 @@ msgstr "" "Internett-leverandøren gir deg ikke en statisk IP-adresse, og IP-adressen " "endres hver gang du kobler deg til Internett." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Din Internett-leverandør begrenser innkommende oppkoblinger." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5461,15 +5359,15 @@ msgstr "" "\"https://pagekite.net\">pagekite.net. I fremtiden kan det bli mulig å " "bruke kameratens {box_name} til dette." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Offentlig synlighet" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "PageKite-domene" @@ -5624,25 +5522,25 @@ msgstr "" "Se oppsettet for SSH-klienten instructions (instruksjoner)" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Ytelse" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" @@ -5717,7 +5615,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Slå av nå" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5728,7 +5626,7 @@ msgstr "" "overskrifter, kontrollere tilgang, og fjerne annonser og annet ubehagelig " "Internett-søppel. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5743,20 +5641,20 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ eller http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Mellomtjener for nettet" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgang {url} med mellomtjener {proxy} på tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5773,7 +5671,7 @@ msgstr "" "skrivebordet kan en eller flere Quassel-klienter brukes til å koble til og " "fra." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktop , og mobile enheter er tilgjengelig." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC-klient" @@ -5797,7 +5695,7 @@ msgstr "IRC-klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5816,7 +5714,7 @@ msgstr "" "href=\"http://radicale.org/clients/\">støttet klientprogram . Radicale " "kan nås av alle brukere med {box_name}-innlogging." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5826,12 +5724,12 @@ msgstr "" "kalendre og adressebøker. Den tilbyr ikke å legge inn nye hendelser eller " "kontakter, det må gjøres med en egen klient." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Kalender og adressebok" @@ -5915,7 +5813,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Tilgangskontrolloppsett oppdatert" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5927,7 +5825,7 @@ msgstr "" "forventer fra en e-posttjener, medregnet MIME-støtte, adressebok, " "mappebehandling, søk etter meldinger og stavekontroll." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5940,7 +5838,7 @@ msgstr "" "som imap.example.com. For IMAP over SSL (anbefalt), fyll " "feltet for tjeneren, som imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5956,17 +5854,17 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "E-postklient" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5975,31 +5873,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Tilgang til private delinger" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Distributed File Storage" msgid "Network File Storage" @@ -6128,7 +6026,7 @@ msgstr "Deling redigert." msgid "Error disabling share: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6136,7 +6034,7 @@ msgstr "" "Searx er en metasøkemotor for Internett som tar hensyn til personvernet. Den " "henter og viser resultater fra flere søkemotorer." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6144,15 +6042,15 @@ msgstr "" "Searx kan brukes for å unngå sporing og profilbygging av søkemotorer. Den " "lagrer ingen kaker som forvalg." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Søk på nettet" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Nettsøk" @@ -6337,11 +6235,11 @@ msgstr "Feil ved oppsetting av begrenset tilgang: {exception}" msgid "Updated security configuration" msgstr "Oppdaterte sikkerhetsoppsett" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli tillater deg å lagre og dele bokmerker." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6349,15 +6247,15 @@ msgstr "" "Merk at Shaarli kun støtter en enkelt brukerkonto, som du må sette opp ved " "det første besøket." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Bokmerker" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6367,7 +6265,7 @@ msgstr "" "beskytte din internettrafikk. Den kan brukes til å omgå internettfiltrering " "og -sensur." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6380,7 +6278,7 @@ msgstr "" "enheter kan koble til denne mellomtjeneren, og deres data vil krypteres og " "mellomtjent gjennom Shadowsocks-tjeneren." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6388,11 +6286,11 @@ msgstr "" "For å bruke Shadowsocks etter oppsett, legg SOCKS5-mellomtjenernettadresen " "på din enhet, nettleser, eller program til http://freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "SOCKS5-mellomtjener" @@ -6527,7 +6425,7 @@ msgstr "Rediger deling" msgid "Share deleted." msgstr "Deling slettet." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6538,7 +6436,7 @@ msgstr "" "tidligere kjent god tilstand i tilfelle det har skjedd uønskede endringer på " "systemet." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6549,7 +6447,7 @@ msgstr "" "etter programvareinstallasjon. Eldre øyeblikksbilder renskes automatisk i " "henhold til innstillingene nedenfor." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for sikkerhetskopier i og med at de er lagret på samme partisjon. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Lagrings-avbildninger" @@ -6773,7 +6671,7 @@ msgstr "Systemet må startes på nytt for å fullføre tilbakerullingen." msgid "Rollback to Snapshot" msgstr "Rull tilbake til øyeblikksbilde" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6785,7 +6683,7 @@ msgstr "" "annensteds hen kan utføre administrasjonsoppgaver, kopiere filer eller kjøre " "andre tjenester ved bruk av slike tilkoblinger." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) tjener" @@ -6839,7 +6737,7 @@ msgstr "SSH-identitetsbekreftelse med passord avskrudd." msgid "SSH authentication with password enabled." msgstr "Identitetsbekreftelse til fjerntjener mislyktes." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Engangspålogging" @@ -6847,7 +6745,7 @@ msgstr "Engangspålogging" msgid "Login" msgstr "Login" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6858,92 +6756,92 @@ msgstr "" "kan vise lagringsmedia som er i bruk, montere og avmontere flyttbare medium, " "utvide rotpartisjonen, osv." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Lager" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Operasjonen mislyktes." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Operasjonen ble avbrutt." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Enheten avmonteres allerede." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Denne aktiviteten støttes ikke på grunn av manglende driver-/verktøystøtte." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Tidsavbrudd for operasjon." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Operasjonen vil vekke en disk fra en tilstand av dyp søvn." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Prøver å avmontere en opptatt enhet." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Operasjonen har allerede blitt avbrutt." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Mangler rettigheter til utførelse av forespurt operasjon." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Denne enheten er allerede montert." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Enheten er ikke montert." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Mangler rettigheter til bruk av forespurt valg." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Enheten er montert av en annen bruker." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -6953,15 +6851,15 @@ msgstr "" "Advarsel: Lite plass igjen på systempartisjon ({percent_used}% brukt, " "{free_space} ledig)." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Lite ledig diskplass" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Diskfeil nært forestående" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, fuzzy, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7085,7 +6983,7 @@ msgstr "Enheten kan trygt kobles fra." msgid "Error ejecting device: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7096,7 +6994,7 @@ msgstr "" "Oppretting, endring og sletting av filer på én enhet vil automatisk bli " "replikert (gjenskapt) til andre enheter." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, fuzzy, python-brace-format #| msgid "" #| "Running Syncthing on {box_name} provides an extra synchronization point " @@ -7121,20 +7019,20 @@ msgstr "" "med sine egne sett med mapper. Webgrensesnittet er bare tilgjengelig for " "brukere som hører til i «admin»-gruppen." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Administrer Syncthing-programmet" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Filsynkronisering" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7146,7 +7044,7 @@ msgstr "" "nettverk av lagringsnoder. Selv om noen av nodene mislykkes, kan filene " "hentes tilbake fra de gjenværende nodene." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7157,11 +7055,11 @@ msgstr "" "standard. Ekstra introduserere kan legges til, og vil introdusere denne " "noden for de andre lagringsnodene." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Distribuert fillagring" @@ -7200,7 +7098,7 @@ msgstr "Tilknyttede introduserere" msgid "Remove" msgstr "Fjern" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7214,40 +7112,40 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Tor-løktjeneste" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor Socks-mellomtjener" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Tor bro-stafettvideresendingsoppsett" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Tor relay-port tilgjengelig" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3-transport registrert" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4-transport registrert" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Adgang til URL {url} på tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekreft Tor-bruk på {url} via tcp{kind}" @@ -7398,15 +7296,11 @@ msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "En Tor SOCKS-port er tilgjengelig på din %(box_name)s på TCP port 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Oppsett uendret" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission er en BitTorrent-klient som har et Web-grensesnitt." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7414,16 +7308,16 @@ msgstr "" "BitTorrent er en like-til-like fildelingsprotokoll. Merk at BitTorrent ikke " "er anonym." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7433,7 +7327,7 @@ msgstr "" "designet for å kunne lese nyheter fra hvor som helst, mens man er så nær en " "virkelig skrivebordsenhet som mulig." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any bruker med " "et {box_name}-brukernavn." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -7454,15 +7348,15 @@ msgstr "" "Når du bruker et mobilbasert- eller skrivebords-program for Tiny Tiny RSS, " "bruk nettadressen /tt-rss-appfor å koble til." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Les og abonner på nyhetsstrømmer" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Nyhetstrøm-leser" @@ -7470,12 +7364,12 @@ msgstr "Nyhetstrøm-leser" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (avgreining)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "Sjekk og legg til siste programvare- og sikkerhetsoppdateringer." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7483,36 +7377,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Oppdater" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update" msgid "Updates" msgstr "Oppdater" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" msgstr "FreedomBox Foundation" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "Automatiske oppgraderinger avslått (deaktivert)" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7717,7 +7618,7 @@ msgstr "Å starte oppgradering (upgrade) mislyktes." msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 #, fuzzy msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -7728,7 +7629,7 @@ msgstr "" "identitetsbekreftelsesmekanisme for de fleste programmer. Noen kan kreve at " "en brukerkonto er en del av gruppen for å klarere brukrens tilgang til det." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, fuzzy, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7739,15 +7640,15 @@ msgstr "" "liste over programmer som er relevante for dem på hjemmesiden. Dog kan kun " "brukere av admin-gruppen endre programmer eller systeminnstillinger." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Brukere og grupper" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Tilgang til alle tjenester og systeminnstillinger" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Sjekk LDAP-oppføring «{search_item}»" @@ -8004,11 +7905,11 @@ msgstr "Endre passord" msgid "Password changed successfully." msgstr "Vellykket passordbytte." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard er en rask, moderne og sikker VPN-tunnel." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -8017,7 +7918,7 @@ msgstr "" "Kan brukes til å koble til en VPN-tilbyder som støtter WireGuard, og for å " "rute all utgående trafikk fra {box_name} gjennom VPN-tunellen." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8370,7 +8271,7 @@ msgstr "Slett tilkobling" msgid "Server deleted." msgstr "Tjener slettet." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8379,7 +8280,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8388,28 +8289,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Adresse" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8427,7 +8328,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8440,7 +8341,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8448,11 +8349,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Foto-organiserer" @@ -8492,23 +8393,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Generisk" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Feil under installasjon" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "installering" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "laster ned" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "mediaendring" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "oppsettsfil: {file}" @@ -8583,6 +8484,10 @@ msgstr "Kjernefunksjonalitet og nettbrukergrensesnitt for %(box_name)s" msgid " Home" msgstr " Hjem" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Hjem" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Programmer" @@ -8882,6 +8787,76 @@ msgstr "%(percentage)s%% fullført" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Directory does not exist." +#~ msgid "User does not exist" +#~ msgstr "Mappen finnes ikke." + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Deaktivert" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "kabel er tilknyttet" + +#, fuzzy +#~| msgid "Deleted selected snapshots" +#~ msgid "Delete selected" +#~ msgstr "Slettet alle valgte avbildninger" + +#, fuzzy +#~| msgid "New Backup" +#~ msgid "New value" +#~ msgstr "Ny sikkerhetskopi" + +#, fuzzy +#~| msgid "Path is not a directory." +#~ msgid "You do not have a home directory." +#~ msgstr "Stien er ikke en katalog." + +#, fuzzy +#~| msgid "Updated media directory" +#~ msgid "Create home directory" +#~ msgstr "Oppdatert mediekatalog" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "Nåværende status:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Domenenavn satt" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Sertifikatsstatus" + +#, fuzzy +#~| msgid "Private key of this machine" +#~ msgid "Private key path" +#~ msgstr "Privatnøkkel tilhørende denne maskinen" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Aktiver skade" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Deaktivert" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Kan ikke å slette kun administratoren i systemet." diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index f7bab44f1..1fbb2baec 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-09-18 13:33+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1049,15 +1050,15 @@ msgstr "" "tot deze toepassing. Alle gebruikers met toegang kunnen alle bibliotheken " "gebruiken." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Gebruik calibre e-book bibliotheken" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "E-boek bibliotheek" @@ -1131,7 +1132,7 @@ msgstr "{name} verwijderd." msgid "Could not delete {name}: {error}" msgstr "Verwijderen van {name} mislukt: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1144,7 +1145,7 @@ msgstr "" "beschikbaar voor veel geavanceerde functies die vaak niet gebruikt worden. " "Er is ook een webgebaseerde terminal beschikbaar voor consoleactiviteiten." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1156,7 +1157,7 @@ msgstr "" "gebruikt voor het openen van aangepaste firewallpoorten en geavanceerde " "netwerkentechnieken zoals bonding, bridging en VLAN-beheer." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1165,7 +1166,7 @@ msgstr "" "Het kan geraadpleegd worden door iedere gebruiker op {box_name} die lid is van de systeembeheerdergroep (admin)." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1173,12 +1174,12 @@ msgstr "" "Cockpit vereist dat je toegang krijgt via een domeinnaam. Het zal niet " "werken wanneer je toegang krijgt via een IP-adres als onderdeel van de URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Serverbeheer" @@ -1343,7 +1344,7 @@ msgstr "Geavanceerde toepassingen en functies worden weergeven" msgid "Hiding advanced apps and features" msgstr "Geavanceerde toepassingen en functies verbergen" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1356,7 +1357,7 @@ msgstr "" "gesprek tot stand te brengen tussen partijen die anders geen verbinding met " "elkaar kunnen maken." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse of ejabberdmoeten worden geconfigureerd met de hier verstrekte details." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "VoIP helper" @@ -1401,7 +1402,7 @@ msgstr "Gebruik de volgende URL's om de communicatieserver in te stellen:" msgid "Use the following shared authentication secret:" msgstr "Gebruik het volgende gedeelde authenticatie geheim:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1409,11 +1410,11 @@ msgstr "" "Netwerk Tijd Server is een programma dat de systeemtijd synchroniseert met " "servers op internet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Datum en Tijd" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Tijd gesynchroniseerd met NTP-server" @@ -1442,11 +1443,11 @@ msgstr "Fout bij tijdzone instellen: {exception}" msgid "Time zone set" msgstr "Tijdzone ingesteld" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge is een BitTorrent Cliënt met web-bediening." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1454,17 +1455,17 @@ msgstr "" "Het standaardwachtwoord is 'deluge', maar dit moet zo snel mogelijk na " "activering gewijzigd worden." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Download bestanden met BitTorrent toepassingen" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "BitTorrent-webclient" @@ -1490,18 +1491,18 @@ msgid "Diagnostics" msgstr "Diagnose" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "geslaagd" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "mislukt" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "fout" @@ -1592,7 +1593,7 @@ msgstr "Resultaat" msgid "Diagnostic Test" msgstr "Diagnostische test" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1600,12 +1601,12 @@ msgstr "" "diaspora* is een decentraal sociaal netwerk waar data in eigen beheer kan " "worden opgeslagen." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Gedecentraliseerd Sociaal Netwerk" @@ -1666,7 +1667,7 @@ msgstr "Gebruikersregistratie ingeschakeld" msgid "User registrations disabled" msgstr "Gebruikersregistratie uitgeschakeld" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1678,7 +1679,7 @@ msgstr "" "internet. Daardoor is het gebruik van de diensten van {box_name} vaak " "onmogelijk van buiten het lokale netwerk." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1696,11 +1697,11 @@ msgstr "" "naamswijziging doorvoeren, en als iemand op het internet om deze DNS naam " "vraagt wordt dit beantwoord met het juiste IP adres." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Dynamic DNS Cliënt" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Dynamische domeinnaam" @@ -1936,7 +1937,7 @@ msgstr "Instellen Dynamic DNS" msgid "Dynamic DNS Status" msgstr "Dynamische DNS-Status" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1944,7 +1945,7 @@ msgstr "" "XMPP is een open en gestandaardiseerd communicatie protocol. Hiermee kan een " "XMPP server met de naam ejabberd worden ingesteld." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web clientgebruiker van {box_name} daartoe " "toegang krijgen." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn toepassing of configureer " "een externe server." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Chatserver" @@ -2103,50 +2104,20 @@ msgstr "E-mailserver" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Maakt gebruik van Postfix, Dovecot & Rspamd" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "Deze alias is al in gebruik" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "Moet ten minste 2 tekens lang zijn" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "Bevat ongeldige tekens" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "Moet beginnen en eindigen met a-z of 0-9" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "Kan geen getal zijn" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Domeinnaam instellen mislukt: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "Gebruiker bestaat niet" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Postfix-Dovecot SASL-integratie" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "Postfix aliasverwijzingen" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "Lokale Postfix ontvanger verwijzingen" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "RoundCube-beschikbaarheid" @@ -2171,16 +2142,61 @@ msgstr "Postfix gebruikt een TLS-certificaat" msgid "Has a TLS certificate" msgstr "Heeft een TLS-certificaat" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Voer een geldige gebruikersnaam in." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Voer een geldige gebruikersnaam in." + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "domein" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "Nieuwe alias (zonder @domein)" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "Bevat ongeldige tekens" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "Moet beginnen en eindigen met a-z of 0-9" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "Kan geen getal zijn" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "My Aliases" +msgid "Aliases" +msgstr "Mijn aliassen" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Ingeschakeld" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Uitgeschakeld" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2197,161 +2213,79 @@ msgstr "K-9 Mail" msgid "FairEmail" msgstr "FairEmail" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "My Aliases" msgid "Manage Aliases" msgstr "Mijn aliassen" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "Je hebt geen e-mailaliassen." -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" -msgstr "Selectie uitschakelen" +#: plinth/modules/email_server/templates/email_alias.html:24 +#, fuzzy +#| msgid "Disabled" +msgid "Disable" +msgstr "Uitgeschakeld" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "Selectie inschakelen" +#, fuzzy +#| msgid "Enabled" +msgid "Enable" +msgstr "Ingeschakeld" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "Verwijder selectie" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "Nieuwe e-mailalias maken" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Toevoegen" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "Nieuwe waarde" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Update" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "Er was een probleem met dit verzoek. Probeer het opnieuw." - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "Postfix TLS" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "Dovecot TLS" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "Ga naar de Rspamd administration interface" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "Servicewaarschuwing" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "Herstellen" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "Je hebt geen homedirectory." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "Aanmaken om e-mails te kunnen ontvangen." - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "Home directory aanmaken" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "Huidige instellingen behouden" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "Gebruik Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "Algemene naam" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "Aangepaste waarden gebruiken" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "Pad van certificaat" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "Pad van privésleutel" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "Systeem standaard gebruiken" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Startpagina" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "Mijn e-mail" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "Mijn aliassen" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Security" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "Domeinen" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Beheren van Snapshots" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "Servicewaarschuwing" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "Herstellen" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "Interne fout in {0}" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "Controleer syslog voor meer informatie" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" -msgstr "Aktieve aliassen" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Er is een fout opgetreden tijdens de configuratie." -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "Inactieve aliassen" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Instelling onveranderd" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2362,7 +2296,7 @@ msgstr "" "datastromen van {box_name} stuurt. Een geactiveerde en goed ingestelde " "firewall vermindert het risico op beveiligingsrisico's vanuit internet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Firewall" @@ -2398,19 +2332,6 @@ msgstr "" msgid "Service/Port" msgstr "Dienst/Poort" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Ingeschakeld" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Uitgeschakeld" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Toegestaan" @@ -2496,7 +2417,7 @@ msgstr "Setup starten" msgid "Setup Complete" msgstr "Instelling voltooid" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2515,7 +2436,7 @@ msgstr "" "line als grafische versies beschikbaar). En je kan je broncode delen met " "mensen over de hele wereld." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2523,15 +2444,15 @@ msgstr "" "Bezoek Git tutorial " "voor meer informatie over het gebruik van Git." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Lees- en schrijftoegang tot Git-repositories" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Eenvoudige Git Hosting" @@ -2968,7 +2889,7 @@ msgstr "Over {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Handleiding" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2980,7 +2901,7 @@ msgstr "" "voor anonimiteit door gecodeerd verkeer te sturen via een netwerk dat door " "vrijwilligers over de hele wereld wordt verspreid." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -2988,7 +2909,7 @@ msgstr "" "Vind meer informatie over I2P op hun project homepage." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2996,19 +2917,19 @@ msgstr "" "Bij het eerste bezoek aan de meegeleverde webinterface wordt het " "configuratieproces gestart." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "I2P-toepassing beheren" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Anonimiteitsnetwerk" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2P proxy" @@ -3054,7 +2975,7 @@ msgstr "" "peer netwerk. Download bestanden door torrents toe te voegen of maak een " "nieuwe torrent om een bestand te delen." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3064,7 +2985,7 @@ msgstr "" "verschillende lichtgewicht markup-talen, met inbegrip van Markdown, en " "algemene blogging functionaliteit zoals reacties en RSS-feeds." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3078,15 +2999,15 @@ msgstr "" "Configuratie kan je deze instellingen wijzigen en nieuwe gebruikers " "registreren." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki en Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Bekijken en bewerken van wiki toepassingen" @@ -3165,13 +3086,13 @@ msgstr "{title} verwijderd." msgid "Could not delete {title}: {error}" msgstr "Verwijderen van {title} mislukt: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted is een server voor Gobby, een tekst-editor voor gezamenlijk " "gebruik." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3182,11 +3103,11 @@ msgstr "" "a> desktop-client en installeer deze. Start Gobby en selecteer vervolgens " "\"Verbinden met Server\" en voer de {box_name} domeinnaam in." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby Server" @@ -3207,7 +3128,7 @@ msgstr "" "Start Gobby en selecteer vervolgens \"Verbinden met Server\" en voer de " "{box_name} domeinnaam in." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3215,11 +3136,11 @@ msgstr "" "JSXC is een webclient voor XMPP. Het wordt meestal gebruikt met een XMPP-" "server die lokaal wordt uitgevoerd." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Chat Cliënt" @@ -3228,7 +3149,7 @@ msgstr "Chat Cliënt" msgid "JavaScript license information" msgstr "JavaScript licentie-informatie" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3244,7 +3165,7 @@ msgstr "" "van een domein te zijn tegenover Let's Encrypt, een certificaatwaarmerker " "(CA)." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3257,15 +3178,15 @@ msgstr "" "\"https://letsencrypt.org/repository/\">Let's Encrypt Subscriber Agreement vóór het gebruik van deze dienst." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Certificaten" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "Kan niet testen: Er zijn geen domeinen ingesteld." @@ -3370,7 +3291,7 @@ msgstr "Certificaat met succes verwijderd voor domein {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Verwijderen certificaat voor domein {domain} mislukt: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3387,7 +3308,7 @@ msgstr "" "Matrix server kunnen gesprekken aangaan met gebruikers op alle andere Matrix " "servers door federatie (gedecentraliseerd netwerk)." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3397,7 +3318,7 @@ msgstr "" "videogesprekken. Installeer de Coturn " "toepassing of configureer een externe server." -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3495,7 +3416,7 @@ msgstr "" "vereist. Ga naar Let's Encrypt om er een " "te verkrijgen." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3508,7 +3429,7 @@ msgstr "" "gebruiken om een wiki website aan te bieden, persoonlijke aantekeningen bij " "te houden of met vrienden aan een gezamenlijke website te werken." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3522,7 +3443,7 @@ msgstr "" "vanuit MediaWiki op de Speciaal:GebruikerRegistreren pagina." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3530,12 +3451,12 @@ msgstr "" "Iedereen met een link naar deze wiki kan hem lezen. Alleen ingelogde " "gebruikers kunnen wijzigingen aanbrengen in de inhoud." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3628,7 +3549,7 @@ msgstr "Standaard uiterlijk veranderd" msgid "Server URL updated" msgstr "Server URL aangepast" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3641,11 +3562,11 @@ msgstr "" "standaardpoort (30000). Voor de verbinding met de server is een Minetest client nodig." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Block Sandbox" @@ -3718,7 +3639,7 @@ msgstr "Instelling PVP bijgewerkt" msgid "Damage configuration updated" msgstr "Instelling schade bijgewerkt" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3736,15 +3657,15 @@ msgstr "" "mediaspelers, smartphones, televisies en spelsystemen (zoals PS3 en Xbox " "360) of programma's zoals totem en Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Mediastreaming server" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Simple Media Server" @@ -3789,7 +3710,7 @@ msgstr "De opgegeven map bestaat niet." msgid "Updated media directory" msgstr "Mediamap bijgewerkt" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3800,7 +3721,7 @@ msgstr "" "meerdere peer-to-peer-netwerken, waaronder eDonkey, Kademlia, Overnet, " "BitTorrent en DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3811,7 +3732,7 @@ msgstr "" "via een van de afzonderlijke mobiele of desktop front-ends of een telnet " "interface. Zie handleiding." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3819,16 +3740,16 @@ msgstr "" "Op {box_name} kunnen de gedownloade bestanden worden gevonden in /var/lib/" "mldonkey/ map." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Bestanden downloaden met eDonkey toepassingen" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-peer bestandsdeling" @@ -3840,7 +3761,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3862,7 +3783,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\"> Monkeysphere SSH documentatie " "voor meer details." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3881,7 +3802,7 @@ msgstr "" "href=\"https://web.monkeysphere.info/download/\">Monkeysphere website " "moeten installeren." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4006,7 +3927,7 @@ msgstr "Sleutel gepubliceerd op keyserver." msgid "Error occurred while publishing key." msgstr "Er is een fout opgetreden tijdens het publiceren van de sleutel." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4014,7 +3935,7 @@ msgstr "" "Mumble is een Open Source, snelle, versleutelde, hoge kwaliteit " "groepsgespreksserver." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4025,11 +3946,11 @@ msgstr "" "programma's waarmee de Mumble dienst gebruikt kan worden. Er zijn " "programma's voor zowel desktop en Android machines." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Voice Chat" @@ -4087,7 +4008,7 @@ msgstr "Alle webtoepassingen" msgid "Services" msgstr "Diensten" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4095,7 +4016,7 @@ msgstr "" "Stel netwerkapparaten in. Maak verbinding met internet via Ethernet, Wi-Fi " "of PPPoE. Deel die verbinding met andere apparaten op het netwerk." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4103,11 +4024,11 @@ msgstr "" "Apparaten die via andere methoden worden beheerd, zijn hier mogelijk niet " "beschikbaar voor configuratie." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Netwerken" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gebruikt DNSSEC op IPv{kind}" @@ -4678,6 +4599,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Deze verbinding is niet actief." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Security" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5164,7 +5090,7 @@ msgstr "generiek" msgid "TUN or TAP interface" msgstr "TUN of TAP interface" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5253,7 +5179,7 @@ msgstr "Verbinding {name} verwijderd." msgid "Failed to delete connection: Connection not found." msgstr "Kan verbinding niet verwijderen: Verbinding niet gevonden." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5271,20 +5197,20 @@ msgstr "" "mogelijk om de rest van het internetgebruik via {box_name} te leiden, voor " "meer veiligheid en anonimiteit." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Verbinding maken met VPN-dienst" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Virtual Private Network" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5365,7 +5291,7 @@ msgstr "" msgid "Download my profile" msgstr "Download mijn profiel" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5378,19 +5304,19 @@ msgstr "" "vereist als de diensten op {box_name} niet te bereiken zijn vanaf de rest " "van internet. Dit is het geval in de volgende situaties:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} is verbonden achter een beperkende firewall." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} is verbonden met een (wireless) router die niet onder eigen " "controle staat." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5398,7 +5324,7 @@ msgstr "" "De internetprovider geeft geen extern IP adres maar maakt gebruik van een " "NAT verbinding." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5406,11 +5332,11 @@ msgstr "" "De internetprovider geeft geen statisch IP adres, en het IP adres verandert " "telkens wanneer je verbinding maakt met internet." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "De internetprovider beperkt inkomende verbindingen." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5424,15 +5350,15 @@ msgstr "" "\">pagekite.net. In de toekomst is het misschien mogelijk om de " "{box_name} van een van je vrienden te gebruiken." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Openbare zichtbaarheid" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "PageKite domein" @@ -5578,12 +5504,12 @@ msgstr "" "Zie de SSH cliënt setup instructies (Engelstalig)" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Prestaties" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5594,7 +5520,7 @@ msgstr "" "gebruikspatronen en of de hardware wordt overbelast door gebruikers en " "services." -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5602,7 +5528,7 @@ msgstr "" "Prestatiestatistieken worden verzameld door Performance Co-Pilot en kunnen " "worden bekeken via de Cockpit-app." -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Systeembewaking" @@ -5673,7 +5599,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Nu Uitschakelen" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5683,7 +5609,7 @@ msgstr "" "om privacy te verhogen, webpagina data en HTTP headers te wijzigen, toegang " "te controleren, en advertenties en andere rommel te weren. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5698,20 +5624,20 @@ msgstr "" "href=\"http://config.privoxy.org\">http://config.privoxy.org/ of http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Gebruik {url} via proxy {proxy} op tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5729,7 +5655,7 @@ msgstr "" "mobiele telefoon kunnen worden gebruikt om te verbinden of de verbinding te " "verbreken." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktop en mobiele apparaten." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC Cliënt" @@ -5753,7 +5679,7 @@ msgstr "IRC Cliënt" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5768,7 +5694,7 @@ msgstr "" "\">ondersteunde clienttoepassing nodig. Radicale kan worden benaderd " "door elke {box_name} gebruiker." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5779,12 +5705,12 @@ msgstr "" "gebeurtenissen of contactpersonen, die moeten worden gedaan met behulp van " "een aparte client." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Agenda en Adresboek" @@ -5866,7 +5792,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuratie van de toegangsrechten is bijgewerkt" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5878,7 +5804,7 @@ msgstr "" "een email toepassing verwacht kan worden, inclusief MIME ondersteuning, een " "adresboek, het beheren van mappen, zoeken in berichten en spellingscontrole." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5892,7 +5818,7 @@ msgstr "" "example.com. Voor IMAP over SSL (aanbevolen): vul het serverveld in, " "bijvoorbeeld imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5907,11 +5833,11 @@ msgstr "" "(https://" "www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "Email Cliënt" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5919,7 +5845,7 @@ msgstr "" "Met Samba kunnen bestanden en mappen worden gedeeld tussen FreedomBox en " "andere computers in het lokale netwerk." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5933,11 +5859,11 @@ msgstr "" "smb://{hostname}.local (op Linux en Mac). Er zijn drie soorten van delen " "waaruit gekozen kan worden: " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Open deelmap - toegankelijk voor iedereen in het lokale netwerk." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5945,7 +5871,7 @@ msgstr "" "Groeps deelmap - alleen toegankelijk voor FreedomBox-gebruikers die deel " "uitmaken van de freedombox-share-groep." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5953,15 +5879,15 @@ msgstr "" "Prive-deelmap - - iedere gebruiker in de freedombox-share-groep kan zijn " "eigen privéruimte hebben." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Toegang tot de privéshares" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Netwerk bestandenopslag" @@ -6080,7 +6006,7 @@ msgstr "Gedeelde map uitgeschakeld." msgid "Error disabling share: {error_message}" msgstr "Fout bij het uitschakelen van de gedeelde map: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6088,7 +6014,7 @@ msgstr "" "Searx is een privacy-respecterende internet metasearch engine. Het " "aggregeert en toont resultaten van meerdere zoekmachines." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6096,15 +6022,15 @@ msgstr "" "Searx kan worden gebruikt om tracking en profilering door zoekmachines te " "voorkomen. Het slaat standaard geen cookies op." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Zoeken op internet" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Zoeken op het Internet" @@ -6285,11 +6211,11 @@ msgstr "Fout bij beperkte toegang instellen: {exception}" msgid "Updated security configuration" msgstr "Bijgewerkte Beveiligingsconfiguratie" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Met Shaarli is het mogelijk bookmarks te bewaren en delen." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6297,15 +6223,15 @@ msgstr "" "Houd er rekening mee dat Shaarli maar een gebruiker ondersteunt, die moet " "worden ingesteld bij het eerste gebruik." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Bladwijzers" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6315,7 +6241,7 @@ msgstr "" "beschermen. Het kan gebruikt worden om censuur en het filteren van Internet " "te omzeilen." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6328,7 +6254,7 @@ msgstr "" "Apparaten in het lokale netwerk kunnen met deze proxy verbinden, en hun data " "zal versleuteld via de Shadowsocks server verstuurd worden." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6337,11 +6263,11 @@ msgstr "" "proxy in op het apparaat, webbrowser of toepassing naar http://" "adres_van_de_freedombox:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Socks5 Proxy" @@ -6478,7 +6404,7 @@ msgstr "Gedeelde map bewerken" msgid "Share deleted." msgstr "Gedeelde map verwijderd." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6488,7 +6414,7 @@ msgstr "" "kunnen worden gebruikt om in geval van ongewenste wijzigingen aan het " "systeem terug te keren naar een voorheen goed werkende staat." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6499,7 +6425,7 @@ msgstr "" "voor en na een software-installatie. Oudere Snapshots worden automatisch " "opgeschoond volgens de onderstaande instellingen." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups aangezien ze op dezelfde partitie als hun bron worden " "bewaard. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Opslag Snapshots" @@ -6715,7 +6641,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "Terugdraaien naar Snapshot" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6727,7 +6653,7 @@ msgstr "" "andere locatie die daarvoor geautoriseerd is, kan beheerdertaken uitvoeren, " "bestanden kopiëren en andere taken verrichten door zulk een verbinding." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -6773,7 +6699,7 @@ msgstr "SSH-authenticatie met wachtwoord uitgeschakeld." msgid "SSH authentication with password enabled." msgstr "SSH-authenticatie met wachtwoord ingeschakeld." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Eenmalige aanmelding" @@ -6781,7 +6707,7 @@ msgstr "Eenmalige aanmelding" msgid "Login" msgstr "Aanmelding" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6793,109 +6719,109 @@ msgstr "" "bekijken, verwijderbare media koppelen en ontkoppelen, de rootpartitie " "uitbreiden enz." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Storage" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "De bewerking is mislukt." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "De bewerking is afgebroken." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Het apparaat is al aan het ontkoppelen." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "De bewerking wordt niet ondersteund vanwege ontbrekende driver / programma-" "ondersteuning." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Er is een time-out opgetreden voor deze bewerking." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "De operatie zou een schijf wakker maken die in \"diepe slaap\" stand is." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Poging om een apparaat te ontkoppelen dat in gebruik is." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "De bewerking is al geannuleerd." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Niet gemachtigd om deze handeling uit te voeren." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Het apparaat is al gekoppeld." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Het apparaat is niet ge-mount." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Het is niet toegestaan de gevraagde optie te gebruiken." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Het apparaat is door een andere gebruiker aangekoppeld." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Weinig ruimte op de systeempartitie: {percent_used} % gebruikt, {free_space} " "vrij." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Weinig schijfruimte" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Schijffout dreigt" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7019,7 +6945,7 @@ msgstr "Het apparaat kan veilig worden losgekoppeld." msgid "Error ejecting device: {error_message}" msgstr "Fout bij verwijderen van apparaat: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7032,7 +6958,7 @@ msgstr "" "zullen automatisch dezelfde veranderingen ondergaan op de andere apparaten " "waarop Syncthing draait." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7050,20 +6976,20 @@ msgstr "" "{box_name} is alleen beschikbaar voor gebruikers die tot de \"admin\"- of de " "\"syncthing-access\"-groep behoren." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Beheer Syncthing toepassing" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Bestandssynchronisatie" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7076,7 +7002,7 @@ msgstr "" "knooppunten uitvallen, kunnen de bestanden uit de resterende knooppunten " "worden opgehaald." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7087,11 +7013,11 @@ msgstr "" "introduceerder. Er kunnen extra introduceerders worden toegevoegd, waardoor " "dit knooppunt aan de andere knooppunten bekend wordt gemaakt." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Distributed File Storage" @@ -7130,7 +7056,7 @@ msgstr "Verbonden introduceerders" msgid "Remove" msgstr "Verwijderen" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7144,40 +7070,40 @@ msgstr "" "de Tor " "Browser aan." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Tor-Onion Dienst" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor Socks Proxy" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Tor relay poort beschikbaar" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 transport geregistreerd" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 transport geregistreerd" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Gebruik URL {url} op tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bevestig Tor gebruik met {url} via tcp{kind}" @@ -7332,15 +7258,11 @@ msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "Een Tor SOCKS poort is beschikbaar op %(box_name)s, via TCP poort 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Instelling onveranderd" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission is een BitTorrent-client met een webinterface." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7348,16 +7270,16 @@ msgstr "" "BitTorrent is een peer-to-peer bestandsdeling protocol. Houd in gedachten " "dat BitTorrent gebruik niet anoniem is." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "Wijzig de standaardpoort van de Transmission daemon niet." -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7367,7 +7289,7 @@ msgstr "" "om het lezen van nieuws vanaf iedere locatie mogelijk te maken, terwijl het " "zoveel mogelijk als een echte desktoptoepassing wil werken." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any gebruiker met een {box_name} login." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7384,15 +7306,15 @@ msgstr "" "Gebruik de URL /tt-rss-app in om te verbinden " "met een mobiele- of desktoptoepassing voor Tiny Tiny RSS." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Lezen en abonneren op nieuwsfeeds" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "News Feed Reader" @@ -7400,13 +7322,13 @@ msgstr "News Feed Reader" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Controleer de nieuwste software- en beveiligingsupdates en pas deze toe." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7419,19 +7341,26 @@ msgstr "" "het systeem opnieuw moet worden opgestart, gebeurt dit automatisch om 02:00 " "uur, waardoor alle toepassingen even niet beschikbaar zijn." -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Update" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Updates" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox geaktualiseerd" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "Kan distributie-update niet starten" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " @@ -7441,11 +7370,11 @@ msgstr "" "te starten. Zorg ervoor dat ten minste 5 GB ruimte vrij is. Als " "ingeschakeld, wordt de distributie-update na 24 uur opnieuw geprobeerd." -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "Distributie-update gestart" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "Update naar volgende stabiele release gestart. Dit kan lang duren." @@ -7639,7 +7568,7 @@ msgstr "Starten van de upgrade is mislukt." msgid "Frequent feature updates activated." msgstr "Tussentijdse Software Updates zijn ingeschakeld." -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7650,7 +7579,7 @@ msgstr "" "apps moet een gebruikersaccount deel uitmaken van een groep om de gebruiker " "toegang te geven tot de toepassing." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7662,15 +7591,15 @@ msgstr "" "die lid zijn van de admin -groep mogen toepassings- of " "systeeminstellingen wijzigen." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Gebruikers en Groepen" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Toegang tot alle diensten en systeeminstellingen" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zoek LDAP item \"{search_item}\"" @@ -7916,11 +7845,11 @@ msgstr "Wijzig wachtwoord" msgid "Password changed successfully." msgstr "Wachtwoord succesvol gewijzigd." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard is een snelle, moderne en veilige VPN-tunnel." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7930,7 +7859,7 @@ msgstr "" "WireGuard ondersteunt, om al het uitgaande verkeer van {box_name} via de VPN " "te sturen." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8253,7 +8182,7 @@ msgstr "Verwijder verbinding met server" msgid "Server deleted." msgstr "Server verwijderd." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8267,7 +8196,7 @@ msgstr "" "met thema's. De website en het beheer ervan is bruikbaar met een mobiel " "apparaat." -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8276,26 +8205,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "Website en Blog" @@ -8309,7 +8238,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8331,7 +8260,7 @@ msgstr "" "van zoekwoorden, kaart- en kalenderweergaven. Individuele foto's kunnen met " "anderen worden gedeeld door een directe link te sturen." -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8342,11 +8271,11 @@ msgstr "" "Zoph. Voor extra gebruikers moeten zowel in {box_name} als in Zoph accounts " "worden aangemaakt met dezelfde gebruikersnaam." -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Foto Organisator" @@ -8385,23 +8314,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Generiek" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Fout tijdens installatie" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "installeren" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "downloaden" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "media wijzigen" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "configuratiebestand: {file}" @@ -8471,6 +8400,10 @@ msgstr "Basisfunctionaliteit en webinterface voor %(box_name)s" msgid " Home" msgstr " Startpagina" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Startpagina" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Toepassingen" @@ -8769,6 +8702,81 @@ msgstr "%(percentage)s%% voltooid" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "The alias was taken" +#~ msgstr "Deze alias is al in gebruik" + +#~ msgid "Must be at least 2 characters long" +#~ msgstr "Moet ten minste 2 tekens lang zijn" + +#~ msgid "User does not exist" +#~ msgstr "Gebruiker bestaat niet" + +#~ msgid "Postfix local recipient maps" +#~ msgstr "Lokale Postfix ontvanger verwijzingen" + +#~ msgid "Disable selected" +#~ msgstr "Selectie uitschakelen" + +#~ msgid "Enable selected" +#~ msgstr "Selectie inschakelen" + +#~ msgid "Delete selected" +#~ msgstr "Verwijder selectie" + +#~ msgid "New value" +#~ msgstr "Nieuwe waarde" + +#~ msgid "There was a problem with your request. Please try again." +#~ msgstr "Er was een probleem met dit verzoek. Probeer het opnieuw." + +#~ msgid "Postfix TLS" +#~ msgstr "Postfix TLS" + +#~ msgid "Dovecot TLS" +#~ msgstr "Dovecot TLS" + +#~ msgid "Visit Rspamd administration interface" +#~ msgstr "Ga naar de Rspamd administration interface" + +#~ msgid "You do not have a home directory." +#~ msgstr "Je hebt geen homedirectory." + +#~ msgid "Create one to begin receiving emails." +#~ msgstr "Aanmaken om e-mails te kunnen ontvangen." + +#~ msgid "Create home directory" +#~ msgstr "Home directory aanmaken" + +#~ msgid "Keep current settings" +#~ msgstr "Huidige instellingen behouden" + +#~ msgid "Use Let's Encrypt" +#~ msgstr "Gebruik Let's Encrypt" + +#~ msgid "Common name" +#~ msgstr "Algemene naam" + +#~ msgid "Use custom values" +#~ msgstr "Aangepaste waarden gebruiken" + +#~ msgid "Certificate path" +#~ msgstr "Pad van certificaat" + +#~ msgid "Private key path" +#~ msgstr "Pad van privésleutel" + +#~ msgid "Use system default" +#~ msgstr "Systeem standaard gebruiken" + +#~ msgid "My Mail" +#~ msgstr "Mijn e-mail" + +#~ msgid "Enabled aliases" +#~ msgstr "Aktieve aliassen" + +#~ msgid "Disabled aliases" +#~ msgstr "Inactieve aliassen" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Kan de enige beheerder in het systeem niet verwijderen." diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index bad62aced..06039931d 100644 --- a/plinth/locale/pl/LC_MESSAGES/django.po +++ b/plinth/locale/pl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-03-03 16:50+0000\n" "Last-Translator: Karol Werner \n" "Language-Team: Polish calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1122,7 +1123,7 @@ msgstr "Usunięto {name}." msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1135,7 +1136,7 @@ msgstr "" "wiele ustawień dla zaawansowanych funkcji serwera, które zwykle nie są " "wymagane. Dostępny jest również terminal konsoli." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1143,7 +1144,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1152,18 +1153,18 @@ msgstr "" "Dostęp do niego mają użytkownicy {box_name} z do " "grupy administratorów." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Administracja serwera" @@ -1324,7 +1325,7 @@ msgstr "Wyświetlanie zaawansowanych aplikacji i cech" msgid "Hiding advanced apps and features" msgstr "Ukrywanie zaawansowanych aplikacji i cech" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1332,7 +1333,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web clientklienta XMPP. Gdy włączony, ejabberd jest " "dostępny dla każdego użytkownika {box_name}." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Serwer czatu" @@ -2066,50 +2067,20 @@ msgstr "Serwer czatu" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Błąd ustawiania nazwy domeny {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -2136,18 +2107,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Brak certyfikatu" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "Niewłaściwa nazwa użytkownika" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "Niewłaściwa nazwa użytkownika" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Domena" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Create Repository" +msgid "Aliases" +msgstr "Utwórz repozytorium" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Włączony" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Wyłączony" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2164,187 +2180,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Create Repository" msgid "Manage Aliases" msgstr "Utwórz repozytorium" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Wyłączony" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy #| msgid "Enabled" -msgid "Enable selected" +msgid "Enable" msgstr "Włączony" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete %(name)s" -msgid "Delete selected" -msgstr "Usuń %(name)s" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Utwórz nową kopię zapasową" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Delete %(name)s" +msgid "Manage Spam" +msgstr "Usuń %(name)s" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Typ usługi" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "Utwórz repozytorium" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "Aktualny status:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Nazwa domeny ustawiona" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Status certyfikatu" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create Repository" -msgid "Private key path" -msgstr "Utwórz repozytorium" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Dom" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Włącz zniszczenia" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Podczas konfiguracji wystąpił błąd." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Wyłączony" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Ustawienie bez zmian" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2355,7 +2267,7 @@ msgstr "" "ruch sieciowy na twoim {box_name}. Włączony i poprawnie skonfigurowany " "firewall redukuje ryzyko zagrożeń z Internetu." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Firewall" @@ -2391,19 +2303,6 @@ msgstr "" msgid "Service/Port" msgstr "Usługa/Port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Włączony" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Wyłączony" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Zezwolono" @@ -2484,7 +2383,7 @@ msgstr "Rozpocznij" msgid "Setup Complete" msgstr "Instalacja zakończona" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2495,21 +2394,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2926,7 +2825,7 @@ msgstr "O {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Podręcznik" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2934,35 +2833,35 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktywuj aplikację" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 #, fuzzy #| msgid "Go to Networks" msgid "Anonymity Network" msgstr "Przejdź do sieci" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2999,14 +2898,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3015,15 +2914,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki i blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -3104,11 +3003,11 @@ msgstr "{title} zostało usunięte." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3116,11 +3015,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -3139,7 +3038,7 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3147,11 +3046,11 @@ msgstr "" "JSXC jest klientem przeglądarkowym XMPP. Zazwyczaj używany jest z serwerem " "XMPP uruchomionym lokalnie." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Klient czatu" @@ -3160,7 +3059,7 @@ msgstr "Klient czatu" msgid "JavaScript license information" msgstr "Informacje o licencji JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3170,7 +3069,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3178,15 +3077,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Certyfikaty" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3289,7 +3188,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3299,14 +3198,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3379,7 +3278,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3387,7 +3286,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3396,18 +3295,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3511,7 +3410,7 @@ msgstr "Ustawienie bez zmian" msgid "Server URL updated" msgstr "Archiwum zostało usunięte." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3520,11 +3419,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" @@ -3592,7 +3491,7 @@ msgstr "Zaktualizowano ustawienia PVP" msgid "Damage configuration updated" msgstr "Zaktualizowano ustawienia zniszczeń" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3603,15 +3502,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3651,36 +3550,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3692,7 +3591,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3704,7 +3603,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3715,7 +3614,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3837,24 +3736,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3909,23 +3808,23 @@ msgstr "" msgid "Services" msgstr "Urządzenie" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4407,6 +4306,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4864,7 +4768,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -4955,7 +4859,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4966,22 +4870,22 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection refused" msgid "Connect to VPN services" msgstr "Odmowa dostępu" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5045,7 +4949,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5054,33 +4958,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5089,15 +4993,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -5231,25 +5135,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -5317,14 +5221,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5334,20 +5238,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5358,7 +5262,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5378,7 +5282,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5388,19 +5292,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5469,7 +5373,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Zaktualizowano ustawienia praw dostępu" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5477,7 +5381,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5486,7 +5390,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5496,19 +5400,19 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 #, fuzzy #| msgid "Dynamic DNS Client" msgid "Email Client" msgstr "Klient Dynamic DNS" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5517,31 +5421,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5659,27 +5563,27 @@ msgstr "Aplikacja wyłączona" msgid "Error disabling share: {error_message}" msgstr "Błąd wyłączenia udziału: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5842,32 +5746,32 @@ msgstr "Błąd ustawienia ograniczonego dostępu: {exception}" msgid "Updated security configuration" msgstr "Zaktualizowano ustawienia bezpieczeństwa" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5876,17 +5780,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -6017,14 +5921,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6032,14 +5936,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -6247,7 +6151,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6255,7 +6159,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6302,7 +6206,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "Nie powiodła się autoryzacja na zdalnym serwerze." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6310,7 +6214,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6318,106 +6222,106 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bajtów" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 #, fuzzy #| msgid "The requested domain is already registered." msgid "The device is already mounted." msgstr "Wnioskowana domena jest już zarejstrowana." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6541,7 +6445,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6549,7 +6453,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6561,20 +6465,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6582,7 +6486,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6590,11 +6494,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6629,7 +6533,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6638,40 +6542,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6801,37 +6705,33 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Ustawienie bez zmian" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission to klient BitTorrent z interfejsem webowym." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any użytkownik za pomocą {box_name} loginu " "może mieć dostęp do Tiny Tiny RSS, gdy ten jest włączony." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6862,12 +6762,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6875,36 +6775,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update URL" msgid "Updates" msgstr "Uaktualnij URL" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" msgstr "Fundacja FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "User registrations disabled" msgid "Distribution update started" msgstr "Rejestracja użytkowników wyłączona" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7083,14 +6990,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7098,15 +7005,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7345,18 +7252,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7698,7 +7605,7 @@ msgstr "Bezpośrednie połłączenie z internetem." msgid "Server deleted." msgstr "Archiwum zostało usunięte." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7707,7 +7614,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7716,26 +7623,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -7751,7 +7658,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7764,7 +7671,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7772,11 +7679,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7812,23 +7719,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "plik konfiguracyjny: {file}" @@ -7906,6 +7813,10 @@ msgstr "Interfejs administracyjny Plinth dla %(box_name)s" msgid " Home" msgstr " Dom" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Dom" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Aplikacje" @@ -8210,6 +8121,61 @@ msgstr "" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Wyłączony" + +#, fuzzy +#~| msgid "Enabled" +#~ msgid "Enable selected" +#~ msgstr "Włączony" + +#, fuzzy +#~| msgid "Delete %(name)s" +#~ msgid "Delete selected" +#~ msgstr "Usuń %(name)s" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "Utwórz repozytorium" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "Aktualny status:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Nazwa domeny ustawiona" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Status certyfikatu" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Private key path" +#~ msgstr "Utwórz repozytorium" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Włącz zniszczenia" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Wyłączony" + #~ msgid "Message Archive Management enabled" #~ msgstr "Zarządzanie historią wiadomości włączone" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 600f9e172..ccf111d70 100644 --- a/plinth/locale/pt/LC_MESSAGES/django.po +++ b/plinth/locale/pt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-05-08 22:33+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1108,7 +1109,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1117,7 +1118,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1125,25 +1126,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Administração do Servidor" @@ -1299,7 +1300,7 @@ msgstr "A mostrar as aplicações e funcionalidades avançadas" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1307,7 +1308,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1965,50 +1966,20 @@ msgstr "Servidor Web" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -2033,18 +2004,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid domain name" +msgid "Enter a valid domain" +msgstr "Nome de domínio inválido" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid domain name" +msgid "Enter a valid destination" +msgstr "Nome de domínio inválido" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain Name" msgid "domain" msgstr "Nome de Domínio" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Create new repository" +msgid "Aliases" +msgstr "Criar novo repositório" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2061,181 +2077,85 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Create new repository" msgid "Manage Aliases" msgstr "Criar novo repositório" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" -msgstr "" +#: plinth/modules/email_server/templates/email_alias.html:24 +#, fuzzy +#| msgid "Applications" +msgid "Disable" +msgstr "Aplicações" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "Applications" -msgid "Enable selected" -msgstr "Aplicações" +#| msgid "Enable DNSSEC" +msgid "Enable" +msgstr "Ativar DNSSEC" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete files" -msgid "Delete selected" -msgstr "Apagar ficheiros" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Criar novo backup" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -#, fuzzy -#| msgid "New Backup" -msgid "New value" -msgstr "Novo Backup" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -#, fuzzy -#| msgid "Service Discovery" -msgid "Service Alert" -msgstr "Descoberta do Serviço" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "Criar Repositório" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Nome do domínio definido" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create new repository" -msgid "Private key path" -msgstr "Criar novo repositório" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 #, fuzzy #| msgid "Domain Name" msgid "Domains" msgstr "Nome de Domínio" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Create new repository" +msgid "Manage Spam" +msgstr "Criar novo repositório" + +#: plinth/modules/email_server/templates/email_server.html:30 +#, fuzzy +#| msgid "Service Discovery" +msgid "Service Alert" +msgstr "Descoberta do Serviço" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Applications" -msgid "Enabled aliases" -msgstr "Aplicações" +#| msgid "General Configuration" +msgid "Error updating configuration" +msgstr "Configuração Geral" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Definição inalterada" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2243,7 +2163,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2277,19 +2197,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2365,7 +2272,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2376,21 +2283,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2784,7 +2691,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2792,33 +2699,33 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Ativar aplicação" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2858,14 +2765,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2874,17 +2781,17 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 #, fuzzy #| msgid "Enable network time" msgid "ikiwiki" msgstr "Ativar tempo da rede" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -2964,11 +2871,11 @@ msgstr "Arquivo apagado." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2976,11 +2883,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2999,17 +2906,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -3018,7 +2925,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3028,7 +2935,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3036,15 +2943,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3149,7 +3056,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3159,14 +3066,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3240,7 +3147,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3248,7 +3155,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3257,18 +3164,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3368,7 +3275,7 @@ msgstr "Definição inalterada" msgid "Server URL updated" msgstr "Arquivo apagado." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3377,11 +3284,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3457,7 +3364,7 @@ msgstr "Configuração atualizada" msgid "Damage configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3468,15 +3375,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3516,36 +3423,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3557,7 +3464,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3569,7 +3476,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3580,7 +3487,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3706,24 +3613,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3778,23 +3685,23 @@ msgstr "" msgid "Services" msgstr "Descoberta do Serviço" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4278,6 +4185,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4741,7 +4653,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "Servidor do Tempo da Rede" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4832,7 +4744,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4843,22 +4755,22 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection refused" msgid "Connect to VPN services" msgstr "Conexão recusada" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4922,7 +4834,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4931,33 +4843,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4966,15 +4878,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -5108,25 +5020,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -5187,14 +5099,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5204,20 +5116,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5228,7 +5140,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5248,7 +5160,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5258,19 +5170,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5341,7 +5253,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5349,7 +5261,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5358,7 +5270,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5368,17 +5280,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5387,31 +5299,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -5533,27 +5445,27 @@ msgstr "Aplicações" msgid "Error disabling share: {error_message}" msgstr "Erro a instalar a aplicação: {error}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5715,32 +5627,32 @@ msgstr "Erro ao definir o nome do domínio: {exception}" msgid "Updated security configuration" msgstr "Configuração Geral" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5749,17 +5661,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5888,14 +5800,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5903,14 +5815,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -6104,7 +6016,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6112,7 +6024,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6155,7 +6067,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6163,7 +6075,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6171,106 +6083,106 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 #, fuzzy #| msgid "Service discovery server is running" msgid "The device is already unmounting." msgstr "O Servidor da descoberta do serviço está a correr" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Esta operação pode ligar um disco que esteja no estado de adormecido." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6389,7 +6301,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6397,7 +6309,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6409,20 +6321,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6430,7 +6342,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6438,11 +6350,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6477,7 +6389,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6486,40 +6398,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6651,58 +6563,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Definição inalterada" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6710,12 +6618,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6723,36 +6631,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "General Configuration" msgid "Updates" msgstr "Configuração Geral" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" msgstr "Freedombox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Applications" msgid "Distribution update started" msgstr "Aplicações" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6930,14 +6845,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6945,15 +6860,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7184,18 +7099,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7525,7 +7440,7 @@ msgstr "Erro a estabelecer ligação ao servidor: {}" msgid "Server deleted." msgstr "Arquivo apagado." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7534,7 +7449,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7543,26 +7458,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7576,7 +7491,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7589,7 +7504,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7597,11 +7512,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7635,25 +7550,25 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "Definição inalterada" -#: plinth/package.py:167 +#: plinth/package.py:193 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -7716,6 +7631,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" @@ -7993,6 +7912,41 @@ msgstr "%(percentage)s%% concluída" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Applications" +#~ msgid "Enable selected" +#~ msgstr "Aplicações" + +#, fuzzy +#~| msgid "Delete files" +#~ msgid "Delete selected" +#~ msgstr "Apagar ficheiros" + +#, fuzzy +#~| msgid "New Backup" +#~ msgid "New value" +#~ msgstr "Novo Backup" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "Criar Repositório" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Nome do domínio definido" + +#, fuzzy +#~| msgid "Create new repository" +#~ msgid "Private key path" +#~ msgstr "Criar novo repositório" + +#, fuzzy +#~| msgid "Applications" +#~ msgid "Enabled aliases" +#~ msgstr "Aplicações" + #, fuzzy #~| msgid "Applications" #~ msgid "Public registration enabled" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 9d6386603..16ddce8db 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-09-10 07:34+0000\n" "Last-Translator: Artem \n" "Language-Team: Russian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1047,15 +1048,15 @@ msgstr "" "получить доступ к приложению. Все пользователи с доступом могут использовать " "все библиотеки." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Использовать библиотеки электронных книг calibre" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "Электронная библиотека" @@ -1129,7 +1130,7 @@ msgstr "{name} удален." msgid "Could not delete {name}: {error}" msgstr "Не удалось удалить {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1142,7 +1143,7 @@ msgstr "" "многих продвинутых функций, которые, как правило, не требуется. Веб-терминал " "на основе консоли управления также доступен." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1154,7 +1155,7 @@ msgstr "" "использовать для открытия настраиваемых портов брандмауэра и расширенных " "сетей, таких как связывание, мостовое соединение и управление VLAN." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1163,7 +1164,7 @@ msgstr "" "Доступ к нему может получить любой пользователь " "на {box_name}, принадлежащий группе администраторов." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1171,12 +1172,12 @@ msgstr "" "Доступ в Кокпит возможен только через доменное имя. Доступ невозможен, если " "использовать IP-адрес как часть URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Администрирование сервера" @@ -1339,7 +1340,7 @@ msgstr "Показать продвинутые приложения и функ msgid "Hiding advanced apps and features" msgstr "Скрыть продвинутые приложения и функции" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1351,7 +1352,7 @@ msgstr "" "коммуникационные серверы могут использовать его для установления вызова " "между сторонами, которые иначе не могут подключиться друг к другу." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, fuzzy, python-brace-format #| msgid "" #| "It is not meant to be used directly by users. Servers such as matrix-" @@ -1365,11 +1366,11 @@ msgstr "" "серверы, как matrix-synapse, должны быть настроены с указанными здесь " "деталями." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "VoIP-помощник" @@ -1401,7 +1402,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Используйте следующий общий секрет аутентификации:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1409,11 +1410,11 @@ msgstr "" "Сервер сетевого времени это программа позволяющая системе синхронизировать " "время с серверами в Интернете." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Дата и Время" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Время синхронизируется с NTP сервером" @@ -1442,11 +1443,11 @@ msgstr "Ошибка установки часового пояса: {exception} msgid "Time zone set" msgstr "Смена часового пояса" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge это клиент BitTorrent, имеющий веб-интерфейс." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1454,17 +1455,17 @@ msgstr "" "Пароль по умолчанию - 'deluge', но вы должны войти в систему и изменить его " "сразу после включения этой службы." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Загружать файлы используя приложения BitTorrent" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Delugе" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "BitTorrent Веб Клиент" @@ -1490,18 +1491,18 @@ msgid "Diagnostics" msgstr "Диагностика" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "успешно" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "сбой" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "ошибка" @@ -1593,7 +1594,7 @@ msgstr "Результат" msgid "Diagnostic Test" msgstr "Диагностический тест" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1601,12 +1602,12 @@ msgstr "" "diaspora* это децентрализованная социальная сеть, где вы можете держать и " "контролировать ваши данные." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diasporа*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Federated Social Netwоrk" @@ -1666,7 +1667,7 @@ msgstr "Регистрации пользователя включена" msgid "User registrations disabled" msgstr "Приложение отключено" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1677,7 +1678,7 @@ msgstr "" "в 24 часа) это может стать препятствиям, чтобы найти вас в Интернете. Это " "так-же может сделать недоступными предоставляемые {box_name} услуги." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1694,11 +1695,11 @@ msgstr "" "сервер будет назначать DNS-имя на новый IP-адрес, и если кто-то из Интернета " "запрашивает DNS-имя, они будут получать ответ ваш текущий IP-адрес." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Клиент динамического DNS" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Динамическое доменное имя" @@ -1934,7 +1935,7 @@ msgstr "Настройка динамического DNS" msgid "Dynamic DNS Status" msgstr "Состояние динамического DNS" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1942,7 +1943,7 @@ msgstr "" "XMPP является открытым и стандартизированным коммуникационным протоколом. " "Здесь вы можете запустить и настроить сервер XMPP, называемый ejabberd." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web client. Когда включено, ejabberd доступен всем пользователям {box_name} ." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "еjabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Чат-сервер" @@ -2095,52 +2096,20 @@ msgstr "Чат-сервер" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Ошибка параметра имени домена: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -#, fuzzy -#| msgid "Directory does not exist." -msgid "User does not exist" -msgstr "Каталог не существует." - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Unavailable Shares" @@ -2169,18 +2138,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Не сертификата" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Введите действительное имя пользователя." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Введите действительное имя пользователя." + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Домен" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Управление библиотеками" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Включено" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Выключено" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2199,191 +2213,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Управление библиотеками" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "Выключено" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "кабель подключен" +#| msgid "Enabled" +msgid "Enable" +msgstr "Включено" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Deleted selected snapshots" -msgid "Delete selected" -msgstr "Удалить выбранные снапшоты" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Создать новую резервную копию" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Добавить" -#: plinth/modules/email_server/templates/email_domains.html:19 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Домены" + +#: plinth/modules/email_server/templates/email_server.html:19 #, fuzzy -#| msgid "Backups" -msgid "New value" -msgstr "Резервные копии" +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Управление снапшотами" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Обновление" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Тип службы" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "Исправление" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Path is not a directory." -msgid "You do not have a home directory." -msgstr "Путь не каталог." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Updated media directory" -msgid "Create home directory" -msgstr "Обновленный каталог медиа" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "Текущий статус:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Смена доменного имени" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Статус сертификата" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Private key of this machine" -msgid "Private key path" -msgstr "Приватный ключ этой машины" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Домой" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Безопасность" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Домены" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Включить урон" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Произошла ошибка во время настройки." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "Выключено" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Настройки без изменений" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2395,7 +2301,7 @@ msgstr "" "правильно настроенным, чтобы уменьшить риск информационной опасности из " "Интернета." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Брандмауэр" @@ -2432,19 +2338,6 @@ msgstr "" msgid "Service/Port" msgstr "Служба/Порт" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Включено" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Выключено" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Разрешено" @@ -2531,7 +2424,7 @@ msgstr "Запуск программы установки" msgid "Setup Complete" msgstr "Установка Завершена" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2550,7 +2443,7 @@ msgstr "" "нескольких доступных графических клиентов. И вы можете поделиться своим " "кодом с людьми по всему миру." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2558,15 +2451,15 @@ msgstr "" "Чтобы узнать больше о том, как использовать Git, посетите Git tutorial." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Доступ к Git-репозиторию с возможностью чтения и записи" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Простой хостинг Git" @@ -2996,7 +2889,7 @@ msgstr "О {box_name}" msgid "{box_name} Manual" msgstr "Руководство {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3008,7 +2901,7 @@ msgstr "" "обеспечивает анонимность, отправляя зашифрованный трафик через сеть, " "управляемую волонтерами, по всему миру." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3016,26 +2909,26 @@ msgstr "" "Более подробную информацию об I2P можно найти на домашней странице их проекта." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" "При первом посещении веб-интерфейса будет запущен процесс конфигурации." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Управление приложением I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Анонимная сеть" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2P Прокси" @@ -3080,7 +2973,7 @@ msgstr "" "сети. Скачайте файлы, добавив торренты, или создайте новый торрент, чтобы " "поделиться файлом." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3090,7 +2983,7 @@ msgstr "" "облегченных языков разметки, включая Markdown, и общие функции ведения " "блогов, такие как комментарии и RSS-каналы." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3104,15 +2997,15 @@ msgstr "" "href=\"{users_url}\">Конфигурация пользователей вы можете изменить " "разрешения или добавить новых пользователей." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Вики и Блог" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Просмотр и редактирование приложений Wiki" @@ -3191,11 +3084,11 @@ msgstr "{title} удалён." msgid "Could not delete {title}: {error}" msgstr "Не удалось удалить {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted это сервер для Gobby, совместный текстовый редактор." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3206,11 +3099,11 @@ msgstr "" "a>, настольный клиент и установите его. Затем запустите Gobby и выберите " "«Подключиться к серверу» и введите доменное имя вашего {box_name}." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Сервер Gobby" @@ -3231,7 +3124,7 @@ msgstr "" "Запустите Gobby, выберите \"Подключиться к серверу\" и введите доменное имя " "вашего {box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3239,11 +3132,11 @@ msgstr "" "JSXC является веб-клиентом для XMPP. Обычно он используется с XMPP сервером " "работающим локально." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Чат-клиент" @@ -3252,7 +3145,7 @@ msgstr "Чат-клиент" msgid "JavaScript license information" msgstr "Информация о лицензии JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3266,7 +3159,7 @@ msgstr "" "автоматически получать и устанавливать цифровые сертификаты для каждого " "доступного домена." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3279,15 +3172,15 @@ msgstr "" "org/repository/\">Let's Encrypt Subscriber Agreement перед " "использованием этой службы." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Сертификаты" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3392,7 +3285,7 @@ msgstr "Сертификат успешно удален для домена {do msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Не удалось удалить сертификат для домена {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3409,14 +3302,14 @@ msgstr "" "одном сервере Matrix могут общаться с пользователями на всех остальных " "серверах." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3511,7 +3404,7 @@ msgstr "" "Пожалуйста, посетите Let's Encrypt, " "чтобы получить его." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3523,7 +3416,7 @@ msgstr "" "редактируемого сайта. Вы можете использовать mediawiki как сайт, делать " "заметки или работать совместно с друзьями." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3538,7 +3431,7 @@ msgstr "" "перейдя в раздел Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3546,12 +3439,12 @@ msgstr "" "Кто угодно, имея ссылку на wiki, может читать её. Только зарегистрированные " "пользователи могут вносить изменения." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3644,7 +3537,7 @@ msgstr "Скин по умолчанию изменен" msgid "Server URL updated" msgstr "URL сервера удален" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3657,11 +3550,11 @@ msgstr "" "порту (30000). Для подключения к серверу требуется Minetest клиент." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Песочница" @@ -3734,7 +3627,7 @@ msgstr "Конфигурация PVP обновлена" msgid "Damage configuration updated" msgstr "Конфигурация урона обновлена" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3752,15 +3645,15 @@ msgstr "" "медиаплеерами, смартфонами, телевизорами и игровыми системами (такими как " "PS3 и Xbox 360) или такими приложениями, как totem и Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Сервер потоковой передачи мультимедиа" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Простой медиа-сервер" @@ -3805,7 +3698,7 @@ msgstr "Указанный каталог не существует." msgid "Updated media directory" msgstr "Обновленный каталог медиа" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3816,7 +3709,7 @@ msgstr "" "пиринговый сетях, таких, как eDonkey, Kademlia, Overnet, BitTorrent и " "DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3827,7 +3720,7 @@ msgstr "" "это с помощью любого мобильного или десктопного фронтэнда или через telnet. " "Смотри руководство." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3835,16 +3728,16 @@ msgstr "" "В {box_name}, загруженные Файлы могут быть найдены в /var/lib/mldonkey/ " "directory." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Загрузить файлы, используя приложение eDonkey" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Файлообмен P2P" @@ -3856,7 +3749,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3875,7 +3768,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\">Monkeysphere SSH documentation " "для подробностей." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3893,7 +3786,7 @@ msgstr "" "может потребоваться программное обеспечение, которое доступно на сайте Monkeysphere ." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "MonkeySphere" @@ -4017,7 +3910,7 @@ msgstr "Опубликованый ключ на сервере ключей." msgid "Error occurred while publishing key." msgstr "Произошла ошибка при публикации ключа." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4025,7 +3918,7 @@ msgstr "" "Mumble это шифрованый чат с высоким качеством голоса, низкой задержкой и " "открытым исходным кодом." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4035,11 +3928,11 @@ msgstr "" "64738. На Клиенты вы можете найти " "клиенты для вашего компьютера и Android устройств." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Голосовой чат" @@ -4096,7 +3989,7 @@ msgstr "Все веб-приложения" msgid "Services" msgstr "Службы" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4104,7 +3997,7 @@ msgstr "" "Настроить сетевые устройства. Подключайтесь к Интернету через Ethernet, Wi-" "Fi или PPPoE. Поделитесь этим подключением с другими устройствами в сети." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4112,11 +4005,11 @@ msgstr "" "Устройства, администрируемые другими методами, могут быть недоступны для " "настройки здесь." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Сети" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Использовать DNSSEC на IPv{kind}" @@ -4671,6 +4564,11 @@ msgstr "IРv6" msgid "This connection is not active." msgstr "Это подключение не активно." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Безопасность" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5206,7 +5104,7 @@ msgstr "Универсальный" msgid "TUN or TAP interface" msgstr "Сетевой интерфейс" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5303,7 +5201,7 @@ msgstr "Подключение {name} удалено." msgid "Failed to delete connection: Connection not found." msgstr "Не удалось удалить подключение: соединение не найдено." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5321,22 +5219,22 @@ msgstr "" "также получить доступ к остальной части Интернет через {box_name} для " "дополнительной безопасности и анонимности." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection to Server" msgid "Connect to VPN services" msgstr "Подключение к серверу" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Виртуальная частная сеть" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5410,7 +5308,7 @@ msgstr "" msgid "Download my profile" msgstr "Скачать мой профиль" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5423,19 +5321,19 @@ msgstr "" "недоступны из остальной части интернета. Это включает в себя следующие " "ситуации:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} ограничен брандмауэром." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} подключен к маршрутизатору (беспроводному), который вы не " "контролируете." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5443,7 +5341,7 @@ msgstr "" "Ваш провайдер не предоставляет вам внешний IP-адрес и вместо этого " "обеспечивает подключение к Интернету через NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5451,11 +5349,11 @@ msgstr "" "Ваш провайдер не предоставляет вам статический IP-адрес, и ваш-IP адрес " "изменяется каждый раз при подключении к Интернету." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Ваш провайдер ограничивает входящие соединения." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5468,15 +5366,15 @@ msgstr "" "услуг pagekite, например pagekite.net. " "В будущем, для этого возможно будет использовать {box_name} вашего приятеля." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PаgeKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Публичная видимость" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "PageKite Домен" @@ -5619,12 +5517,12 @@ msgstr "" "Инструкции " "по настройке клиента SSH" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Производительность" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5635,7 +5533,7 @@ msgstr "" "представление о шаблонах использования и о том, перегружено ли оборудование " "пользователями и службами." -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5643,7 +5541,7 @@ msgstr "" "Метрики производительности собираются Performance Co-Pilot и могут быть " "просмотрены с помощью приложения Cockpit." -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Системный мониторинг" @@ -5716,7 +5614,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Завершить работу сейчас" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5727,7 +5625,7 @@ msgstr "" "HTTP, контроля доступа и удаления рекламы и прочего неприятного мусора в " "интернете. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5742,20 +5640,20 @@ msgstr "" "config.privoxy.org\">http://config.privoxy.org или http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Web-прокси" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Доступ к {url} с прокси {proxy} на tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5772,7 +5670,7 @@ msgstr "" "клиентов. Для этого могут использоваться как клиенты настольного компьютера, " "так и мобильные версии." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your для десктопов и мобильных устройств." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC-клиент" @@ -5796,7 +5694,7 @@ msgstr "IRC-клиент" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5811,7 +5709,7 @@ msgstr "" "supported-clients\">поддерживаемое клиентское приложение. Доступ к " "Radicale может получить любой пользователь с логином {box_name}." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5821,12 +5719,12 @@ msgstr "" "создание новых календарей и адресных книг. Он не поддерживает добавление " "событий или контактов, для этого требуется отдельный клиент." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Календарь и Адресная книга" @@ -5908,7 +5806,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Конфигурация прав доступа обновлена" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5920,7 +5818,7 @@ msgstr "" "которую вы ожидаете от почтового клиента, включая поддержку MIME, адресную " "книгу, управление папками, поиск сообщений и проверку орфографии." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5934,7 +5832,7 @@ msgstr "" "example.com. Для IMAP через SSL (рекомендуется) заполните поле " "сервера, например imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5950,11 +5848,11 @@ msgstr "" "security/lesssecureapps\" >https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "Почтовый клиент" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5962,7 +5860,7 @@ msgstr "" "Samba позволяет обмениваться файлами и папками между FreedomBox и другими " "компьютерами в вашей локальной сети." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5975,11 +5873,11 @@ msgstr "" "вашем компьютере по адресу \\\\{hostname} (в Windows) или smb://{hostname}." "local (в Linux и Mac). Вы можете выбрать один из трёх типов: " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Открытый общий ресурс - доступен всем в вашей локальной сети." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5987,7 +5885,7 @@ msgstr "" "Общий доступ к группе - доступен только пользователям FreedomBox, которые " "находятся в группе Freedombox-share." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5995,15 +5893,15 @@ msgstr "" "Домашняя папка - каждый пользователь в группе Freedombox-share может иметь " "собственное личное пространство." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Доступ к частным общим ресурсам" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Сетевое хранилище файлов" @@ -6124,7 +6022,7 @@ msgstr "Общий доступ отключён." msgid "Error disabling share: {error_message}" msgstr "Ошибка отключения общего доступа: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6132,7 +6030,7 @@ msgstr "" "Searx - это конфиденциальная метапоисковая система. Она агрегирует и " "показывает результаты с разных поисковых систем." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6140,15 +6038,15 @@ msgstr "" "Searx может быть использован, чтобы избежать отслеживания и профилирования " "поисковыми системами. Она не хранит никаких файлов cookie по умолчанию." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Поиск в интернете" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Веб-поиск" @@ -6331,11 +6229,11 @@ msgstr "Ошибка настройки ограничения доступа: { msgid "Updated security configuration" msgstr "Обновлена настройка безопасности" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli позволяет вам сохранять и обмениваться закладками." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6343,15 +6241,15 @@ msgstr "" "Обратите внимание, что Shaarli поддерживает только одну учетную запись " "пользователя, которую вам нужно будет настроить при первом посещении." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shаarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Закладки" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6361,7 +6259,7 @@ msgstr "" "защитить ваш интернет-трафик. Он может использоваться для обхода Интернет-" "фильтрации и цензуры." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6373,7 +6271,7 @@ msgstr "" "к серверу Shadowsocks. Он также запускать SOCKS5 прокси.Локальные устройства " "могут подключиться к этому прокси, и их данные будут зашифрованы." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6381,11 +6279,11 @@ msgstr "" "Чтобы использовать Shadowsocks после установки, смените URL-адрес SOCKS5 " "прокси в браузере или ином приложении на http://freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Socks5 Прокси" @@ -6524,7 +6422,7 @@ msgstr "Редактировать общий ресурс" msgid "Share deleted." msgstr "Общий ресурс удалён." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6534,7 +6432,7 @@ msgstr "" "btrfs. Они могут использоваться для отката системы к последнему рабочему " "состоянию в случае неприемлемых изменений в системе." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6545,7 +6443,7 @@ msgstr "" "до и после инсталляции программного обеспечения. Старые снимки автоматически " "удаляются в соответствии с установками ниже." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups, так как они хранятся на том же разделе. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Хранилище снимков" @@ -6760,7 +6658,7 @@ msgstr "Необходимо перезагрузить систему для з msgid "Rollback to Snapshot" msgstr "Откат к снимку" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6772,7 +6670,7 @@ msgstr "" "может выполнять задачи администрирования, копировать файлы или запускать " "другие услуги с использованием таких соединений." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) сервер" @@ -6818,7 +6716,7 @@ msgstr "SSH-аутентификация с отключенным пароле msgid "SSH authentication with password enabled." msgstr "SSH-аутентификация с включённым паролем." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Единый вход" @@ -6826,7 +6724,7 @@ msgstr "Единый вход" msgid "Login" msgstr "Логин" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6837,107 +6735,107 @@ msgstr "" "{box_name}. Вы можете видеть, какие носители используются, монтировать и " "размонтировать подключаемые носители, увеличивать корневой раздел итп." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Хранилище" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} байт" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} КиБ" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Миб" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Гиб" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Тиб" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Операция не удалась." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Операция была отменена." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Устройство уже отключается." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Операция не поддерживается из-за отсутствия поддержки драйвера или утилиты." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Время операции вышло." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Операция пробудит диск, находящийся в режиме глубокого сна." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Попытка отключения устройства, которое используется." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Операция уже отменена." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Отсутствует авторизация для выполнения запрошенной операции." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Устройство уже подключено." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Устройство не подключено." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Использование запрошенной опции не разрешено." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Устройство подключено другим пользователем." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Недостаточно места в системном разделе: использовано {percent_used}%, " "свободно {free_space}." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Недостаточно места на диске" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Неизбежный сбой диска" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7063,7 +6961,7 @@ msgstr "Устройство может быть безопасно отсоед msgid "Error ejecting device: {error_message}" msgstr "Ошибка извлечения устройства: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7075,7 +6973,7 @@ msgstr "" "или удаление файлов на одном устройстве будет автоматически реплицироваться " "на все другие устройства, на которых работает Syncthing." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7094,20 +6992,20 @@ msgstr "" "собственный набор папок. Веб-интерфейс доступен только для пользователей, " "принадлежащих к группе «admin» или «syncthing-access»." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Администрирование приложения Syncthing" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Синхронизация файлов" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7119,7 +7017,7 @@ msgstr "" "распределенной сети узлов хранения файлов. Если некоторые узлы будут " "недоступны, вы можете получить ваши файлы от оставшихся узлов." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7130,11 +7028,11 @@ msgstr "" "быть добавлены дополнительные посредники, которые вводят этот узел в другие " "узлы хранения." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Распределенное Хранилище Файлов" @@ -7173,7 +7071,7 @@ msgstr "Подключенные посредники" msgid "Remove" msgstr "Удалить" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7187,40 +7085,40 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Сервис Tor Onion" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor Socks прокси" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Ретранслятор Tor типа мост" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Доступен порт трансляции Tor" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 транспорт зарегестрирован" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 транспорт зарегистрирован" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Доступ к {url} по tcp{kind} через Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Подтверждение использования Tor в {url} по tcp {kind}" @@ -7369,15 +7267,11 @@ msgstr "SОCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Порт Tor SOCKS вашего %(box_name)s доступен по порту TCP 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Настройки без изменений" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission это клиент BitTorrent, имеющий веб-интерфейс." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7385,16 +7279,16 @@ msgstr "" "BitTorrent является протокол обмена файлами peer-to-peer. Обратите внимание, " "что BitTorrent не является анонимным." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmissiоn" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7403,7 +7297,7 @@ msgstr "" "Tiny Tiny RSS это новый (RSS/Atom) агрегатор новостей, позволяющий читать " "новости из любого места, так же удобно, как и в настольных приложениях." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any пользователь с логином {box_name}." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7421,15 +7315,15 @@ msgstr "" "Tiny RSS используйте URL / tt-rss-app для " "подключения." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Чтение и подписка на ленты новостей" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Чтение ленты новостей" @@ -7437,12 +7331,12 @@ msgstr "Чтение ленты новостей" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "Проверьте и установите новейшие программы и обновления безопасности." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7456,34 +7350,41 @@ msgstr "" "выполняется автоматически в 02:00, в результате чего все приложения на " "короткое время становятся недоступными." -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Обновление" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update" msgid "Updates" msgstr "Обновление" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox обновлён" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "Автоматические обновления отключены" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7686,7 +7587,7 @@ msgstr "Сбой при запуске обновления." msgid "Frequent feature updates activated." msgstr "Активированы частые обновления функций." -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7698,7 +7599,7 @@ msgstr "" "запись пользователя была частью группы, чтобы разрешить пользователю доступ " "к приложению." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7710,15 +7611,15 @@ msgstr "" "пользователи группы admin могут изменять приложения или системные " "настройки." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Пользователи и группы" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Доступ ко всем сервисам и настройкам системы" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Проверьте запись LDAP \"{search_item}\"" @@ -7965,11 +7866,11 @@ msgstr "Изменить пароль" msgid "Password changed successfully." msgstr "Пароль успешно изменён." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard - это быстрый, современный и безопасный VPN-туннель." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7979,7 +7880,7 @@ msgstr "" "поддерживает WireGuard, и для маршрутизации всего исходящего трафика от " "{box_name} через VPN." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8298,7 +8199,7 @@ msgstr "Удалить соединение с сервером" msgid "Server deleted." msgstr "Сервер удален." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8307,7 +8208,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8316,28 +8217,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Адрес" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8355,7 +8256,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8368,7 +8269,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8376,11 +8277,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8416,23 +8317,23 @@ msgstr "PPPоE" msgid "Generic" msgstr "Универсальный" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Ошибка во время установки" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "Установка" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "Загрузка" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "изменение медиа" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "Файл настроек: {file}" @@ -8502,6 +8403,10 @@ msgstr "Базовая функциональность и веб-интерфе msgid " Home" msgstr " Домой" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Домой" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Приложения" @@ -8801,6 +8706,76 @@ msgstr "%(percentage)s%% завершено" msgid "Gujarati" msgstr "Гуджарати" +#, fuzzy +#~| msgid "Directory does not exist." +#~ msgid "User does not exist" +#~ msgstr "Каталог не существует." + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "Выключено" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "кабель подключен" + +#, fuzzy +#~| msgid "Deleted selected snapshots" +#~ msgid "Delete selected" +#~ msgstr "Удалить выбранные снапшоты" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "New value" +#~ msgstr "Резервные копии" + +#, fuzzy +#~| msgid "Path is not a directory." +#~ msgid "You do not have a home directory." +#~ msgstr "Путь не каталог." + +#, fuzzy +#~| msgid "Updated media directory" +#~ msgid "Create home directory" +#~ msgstr "Обновленный каталог медиа" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "Текущий статус:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Смена доменного имени" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Статус сертификата" + +#, fuzzy +#~| msgid "Private key of this machine" +#~ msgid "Private key path" +#~ msgstr "Приватный ключ этой машины" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Включить урон" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "Выключено" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Невозможно удалить единственного администратора в системе." diff --git a/plinth/locale/si/LC_MESSAGES/django.po b/plinth/locale/si/LC_MESSAGES/django.po index 5e5d933fb..c07bd743f 100644 --- a/plinth/locale/si/LC_MESSAGES/django.po +++ b/plinth/locale/si/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-04-27 13:32+0000\n" "Last-Translator: HelaBasa \n" "Language-Team: Sinhala calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1034,7 +1035,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1043,7 +1044,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1051,25 +1052,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1214,7 +1215,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1222,7 +1223,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1866,48 +1867,18 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1932,16 +1903,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1958,159 +1968,69 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2118,7 +2038,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2150,19 +2070,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2238,7 +2145,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2249,21 +2156,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2624,7 +2531,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2632,31 +2539,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2693,14 +2600,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2709,15 +2616,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2794,11 +2701,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2806,11 +2713,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2829,17 +2736,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2848,7 +2755,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2858,7 +2765,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2866,15 +2773,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2975,7 +2882,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2985,14 +2892,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3063,7 +2970,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3071,7 +2978,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3080,18 +2987,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3173,7 +3080,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3182,11 +3089,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3252,7 +3159,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3263,15 +3170,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3311,36 +3218,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3352,7 +3259,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3364,7 +3271,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3375,7 +3282,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3497,24 +3404,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3565,23 +3472,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4061,6 +3968,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4498,7 +4410,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4587,7 +4499,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4598,20 +4510,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4675,7 +4587,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4684,33 +4596,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4719,15 +4631,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4861,25 +4773,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4940,14 +4852,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4957,20 +4869,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4981,7 +4893,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5001,7 +4913,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5011,19 +4923,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5090,7 +5002,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5098,7 +5010,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5107,7 +5019,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5117,17 +5029,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5136,31 +5048,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5268,27 +5180,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5443,32 +5355,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5477,17 +5389,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5616,14 +5528,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5631,14 +5543,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5828,7 +5740,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5836,7 +5748,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5877,7 +5789,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5885,7 +5797,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5893,104 +5805,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6104,7 +6016,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6112,7 +6024,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6124,20 +6036,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6145,7 +6057,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6153,11 +6065,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6192,7 +6104,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6201,40 +6113,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6360,58 +6272,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6419,12 +6327,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6432,30 +6340,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6621,14 +6536,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6636,15 +6551,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6870,18 +6785,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7175,7 +7090,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7184,7 +7099,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7193,26 +7108,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7226,7 +7141,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7239,7 +7154,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7247,11 +7162,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7285,23 +7200,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7362,6 +7277,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index 5a494a952..7b3278e50 100644 --- a/plinth/locale/sl/LC_MESSAGES/django.po +++ b/plinth/locale/sl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Slovenian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1155,7 +1156,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1168,7 +1169,7 @@ msgstr "" "običajno niso zahtevane. Na voljo je tudi spletni ternimal za opravila z " "ukazno vrstico." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1176,7 +1177,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -1191,18 +1192,18 @@ msgstr "" "\"{users_url}\">katerikoli uporabnik na {box_name}, ki je član skupine " "skrbnikov." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Skrbništvo strežnika" @@ -1357,7 +1358,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1365,7 +1366,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -2016,48 +2017,18 @@ msgstr "Strežnik z imenom domene" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -2082,16 +2053,61 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Enter a valid domain" +msgstr "Neveljavno ime gostitelja" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Enter a valid destination" +msgstr "Neveljavno ime gostitelja" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Create new repository" +msgid "Aliases" +msgstr "Ustvari novo skladišče" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2108,171 +2124,79 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Create new repository" msgid "Manage Aliases" msgstr "Ustvari novo skladišče" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:29 #, fuzzy -#| msgid "Delete Archive" -msgid "Delete selected" -msgstr "Izbriši arhiv" +#| msgid "Enable DNSSEC" +msgid "Enable" +msgstr "Omogoči DNSSEC" -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create remote backup repository" msgid "Create a new email alias" msgstr "Ustvari oddaljeno skladišče za rezervne kopije" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Create new repository" +msgid "Manage Spam" +msgstr "Ustvari novo skladišče" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "Odkrivanje storitev" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create new repository" -msgid "Create home directory" -msgstr "Ustvari novo skladišče" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create new repository" -msgid "Private key path" -msgstr "Ustvari novo skladišče" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2280,7 +2204,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2312,19 +2236,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2400,7 +2311,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2411,21 +2322,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2811,7 +2722,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2819,31 +2730,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2880,14 +2791,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2896,15 +2807,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2982,11 +2893,11 @@ msgstr "Arhiv je izbrisan." msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2994,11 +2905,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -3017,17 +2928,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -3036,7 +2947,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3046,7 +2957,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3054,15 +2965,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3163,7 +3074,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3173,14 +3084,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3251,7 +3162,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3259,7 +3170,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3268,18 +3179,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3363,7 +3274,7 @@ msgstr "" msgid "Server URL updated" msgstr "Arhiv je izbrisan." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3372,11 +3283,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3442,7 +3353,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3453,15 +3364,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3501,36 +3412,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3542,7 +3453,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3554,7 +3465,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3565,7 +3476,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3687,24 +3598,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3759,23 +3670,23 @@ msgstr "" msgid "Services" msgstr "Odkrivanje storitev" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4255,6 +4166,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4704,7 +4620,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4793,7 +4709,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4804,22 +4720,22 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection refused" msgid "Connect to VPN services" msgstr "Povezava je zavrnjena" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4883,7 +4799,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4892,33 +4808,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4927,15 +4843,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -5069,25 +4985,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -5148,14 +5064,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5165,20 +5081,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5189,7 +5105,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5209,7 +5125,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5219,19 +5135,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5298,7 +5214,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5306,7 +5222,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5315,7 +5231,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5325,17 +5241,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5344,31 +5260,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5482,27 +5398,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "Napaka ob nameščanju aplikacije: {error}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5659,32 +5575,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5693,17 +5609,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5832,14 +5748,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5847,14 +5763,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -6046,7 +5962,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6054,7 +5970,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6097,7 +6013,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6105,7 +6021,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6113,104 +6029,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6326,7 +6242,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6334,7 +6250,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6346,20 +6262,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6367,7 +6283,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6375,11 +6291,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6414,7 +6330,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6423,40 +6339,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6582,37 +6498,33 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -6627,21 +6539,21 @@ msgstr "" "\"{users_url}\">katerikoli uporabnik na {box_name}, ki je član skupine " "skrbnikov." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6649,12 +6561,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6662,32 +6574,39 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" msgstr "FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6855,14 +6774,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6870,15 +6789,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7108,18 +7027,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7445,7 +7364,7 @@ msgstr "Napaka ob nameščanju aplikacije: {error}" msgid "Server deleted." msgstr "Arhiv je izbrisan." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7454,7 +7373,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7463,26 +7382,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7496,7 +7415,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7509,7 +7428,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7517,11 +7436,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7555,23 +7474,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7632,6 +7551,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" @@ -7904,6 +7827,21 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Delete Archive" +#~ msgid "Delete selected" +#~ msgstr "Izbriši arhiv" + +#, fuzzy +#~| msgid "Create new repository" +#~ msgid "Create home directory" +#~ msgstr "Ustvari novo skladišče" + +#, fuzzy +#~| msgid "Create new repository" +#~ msgid "Private key path" +#~ msgstr "Ustvari novo skladišče" + #, fuzzy #~| msgid "Domain Name" #~ msgid "Disk Name" diff --git a/plinth/locale/sq/LC_MESSAGES/django.po b/plinth/locale/sq/LC_MESSAGES/django.po index 23121c81f..bc9ddfc0a 100644 --- a/plinth/locale/sq/LC_MESSAGES/django.po +++ b/plinth/locale/sq/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-06-07 12:34+0000\n" "Last-Translator: Besnik Bleta \n" "Language-Team: Albanian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1045,15 +1046,15 @@ msgstr "" "gjendje të përdorin aplikacionin. Krejt përdoruesit e lejuar mund të hyjnë " "në të gjitha bibliotekat." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Përdorni biblioteka calibre e-librash" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "Bibliotekë E-librash" @@ -1127,7 +1128,7 @@ msgstr "{name} u fshi." msgid "Could not delete {name}: {error}" msgstr "S’u fshi dot {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1141,7 +1142,7 @@ msgstr "" "domosdoshme. Ka gjithashtu edhe një terminal me bazë web, për veprime që nga " "një konsol." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1154,7 +1155,7 @@ msgstr "" "fjala <em>bonding</em>, <em>bridging</em> dhe " "administrmi VLAN-i." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1163,7 +1164,7 @@ msgstr "" "Mund të përdoret nga cilido përdorues në " "{box_name} që është pjesë e grupit të përgjegjësve." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1171,12 +1172,12 @@ msgstr "" "Cockpit lyp përdorim që nga një emër përkatësie. S’do të funksionojë, nëse " "provohet duke përdorur një adresë IP, si pjesë e URL-së." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Administrim Shërbyesi" @@ -1341,7 +1342,7 @@ msgstr "Me aplikacione dhe veçori të thelluara shfaqur" msgid "Hiding advanced apps and features" msgstr "Me aplikacione dhe veçori të thelluara fshehur" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1354,7 +1355,7 @@ msgstr "" "thirrje mes palësh që, përndryshe, s’janë në gjendje të lidhen me njëri-" "tjetrin." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client me hyrje {box_name}." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Shërbyes Fjalosjesh" @@ -2101,52 +2102,20 @@ msgstr "Shërbyes Fjalosjesh" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Gabim në caktimin e emrin të përkatësisë: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -#, fuzzy -#| msgid "Directory does not exist." -msgid "User does not exist" -msgstr "Drejtoria s’ekziston." - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "unavailable" @@ -2175,18 +2144,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "S’ka dëshmi" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Jepni një emër përdoruesi të vlefshëm." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Jepni një emër përdoruesi të vlefshëm." + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "Përkatësi" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Administroni Biblioteka" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "E aktivizuar" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "E çaktivizuar" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2205,187 +2219,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Administroni Biblioteka" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "E çaktivizuar" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "kablloja është e lidhur" +#| msgid "Enabled" +msgid "Enable" +msgstr "E aktivizuar" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Deleted selected snapshots" -msgid "Delete selected" -msgstr "U fshinë fotografimet e përzgjedhur" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Krijoni një kopjeruajtje të re" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Shtoje" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "Përkatësi" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Përditësoje" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Administroni Fotografime" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Lloj Shërbimi" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Path is not a directory." -msgid "You do not have a home directory." -msgstr "Shtegu s’është drejtori." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Updated media directory" -msgid "Create home directory" -msgstr "U përditësua drejtori mediash" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Emri i përkatësisë u caktua" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "Gjendje Dëshmie" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Private key of this machine" -msgid "Private key path" -msgstr "Kyç privat i kësaj makine" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Kreu" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Siguri" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "Përkatësi" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "Aktivizo dëmtim" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Ndodhi një gabim gjatë formësimit." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "E çaktivizuar" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2396,7 +2306,7 @@ msgstr "" "në rrjet te {box_name} juaj. Mbajta e një firewall-i të aktivizuar dhe të " "formësuar si duhet ul rrezikun e kërcënimeve të sigurisë nga Interneti." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Firewall" @@ -2433,19 +2343,6 @@ msgstr "" msgid "Service/Port" msgstr "Shërbim/Portë" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "E aktivizuar" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "E çaktivizuar" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "E lejuar" @@ -2532,7 +2429,7 @@ msgstr "Nis Ujdisjen" msgid "Setup Complete" msgstr "Ujdisje e Plotësuar" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2550,7 +2447,7 @@ msgstr "" "rreshti urdhrash ose përmes klientësh të shumta grafikë të gatshëm. Dhe mund " "ta ndani kodin tuaj me njerëz anembanë botës." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2558,15 +2455,15 @@ msgstr "" "Për të mësuar më tepër se si të përdoret Git, vizitoni përkujdesore Git-i." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Hyrje për shkrim-lexim në depo Git" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Strehim i Thjeshtë Git" @@ -2999,7 +2896,7 @@ msgstr "Mbi {box_name}" msgid "{box_name} Manual" msgstr "Doracak për {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -3011,7 +2908,7 @@ msgstr "" "dërguar trafik të fshehtëzuar, përmes një rrjeti të mbajtur në këmbë nga " "vullnetarë, të shpërndarë anembanë botës." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -3019,26 +2916,26 @@ msgstr "" "Më më tepër informacion rreth I2P-së mund të gjeni që nga faqja hyrëse e vetë projektit." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" "Vizita e parë te ndërfaqja web e dhënë do të fillojë procesin e formësimit." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Administroni aplikacion I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Rrjet Anonimiteti" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "Ndërmjetës I2P" @@ -3084,7 +2981,7 @@ msgstr "" "një rrjet “peer-to-peer”. Shkarkoni kartela duke shtuar rrëkeza, ose krijoni " "një rrëkezë të re për të ndarë një kartelë me të tjerët." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3094,7 +2991,7 @@ msgstr "" "markup-i të lehta, përfshi Markdown, dhe funksione të rëndomtë blogimi, bie " "fjala, komente dhe prurje RSS." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3108,15 +3005,15 @@ msgstr "" "ekzistueset. Te Formësim Përdoruesish mund të " "ndryshoni këto leje ose të shtoni përdorues të rinj." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki dhe Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Shihni dhe përpunoni aplikacione wiki" @@ -3195,13 +3092,13 @@ msgstr "{title} u fshi." msgid "Could not delete {title}: {error}" msgstr "S’u fshi dot {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted është një shërbyes për Gobby, një përpunues tekstesh në " "bashkëpunim." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3212,11 +3109,11 @@ msgstr "" "klientin desktop, dhe instalojeni. Mandej nisni Gobby-n dhe përzgjidhni " "“Lidhu me Shërbyes” dhe jepni emrin e përkatësisë së {box_name} tuaj." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Shërbyes Gobby" @@ -3237,7 +3134,7 @@ msgstr "" "Niseni Gobby-n dhe përzgjidhni “Lidhu me Shërbyes” dhe jepni emrin e " "përkatësisë tuaj {box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3245,11 +3142,11 @@ msgstr "" "JSXC është një klient web për XMPP-në. Zakonisht përdoret me një shërbyes " "XMPP që xhiron lokalisht." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Klient Fjalosjesh" @@ -3258,7 +3155,7 @@ msgstr "Klient Fjalosjesh" msgid "JavaScript license information" msgstr "Hollësi licence JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3273,7 +3170,7 @@ msgstr "" "përkatësi të pranishme. Këtë e bën duke dëshmuar për veten se është i zoti " "i një përkatësie nga Let’s Encrypt, një autoritet dëshmish (AD)." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3286,15 +3183,15 @@ msgstr "" "pajtohuni me Marrëveshje " "Pajtimtari Let’s Encrypt before using this service." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Dëshmi" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3399,7 +3296,7 @@ msgstr "Dëshmi e fshirë me sukses për përkatësinë {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "S’u arrit të fshihet dëshmi për përkatësinë {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3409,14 +3306,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3508,7 +3405,7 @@ msgstr "" "Ju lutemi, kaloni te Let's Encrypt, që " "të merrni një të tillë." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3521,7 +3418,7 @@ msgstr "" "strehuar sajt të llojit wiki, për të mbajtur shënime ose për të bashkëpunuar " "me shokë në projekte." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3536,7 +3433,7 @@ msgstr "" "href=\"/mediawiki/index.php/Special:CreateAccount\">Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3544,12 +3441,12 @@ msgstr "" "Cilido me një lidhje për te kjo wiki mund ta lexojë atë. Ndryshime te lënda " "mund të bëjnë vetëm përdorues që kanë bërë hyrjen në llogaritë e tyre." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3642,7 +3539,7 @@ msgstr "Lëkurçja parazgjedhje u ndryshua" msgid "Server URL updated" msgstr "URL-ja e shërbyesit u përditësua" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3651,11 +3548,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3729,7 +3626,7 @@ msgstr "Formësimi PVP u përditësua" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3747,15 +3644,15 @@ msgstr "" "telefona të mençur, televizorë, dhe sisteme lojërash (të tillë si PS3 dhe " "Xbox 360), ose aplikacione të tillë si totem dhe Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Shërbyes transmetimi mediash" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Shërbyes i Thjeshtë Mediash" @@ -3800,7 +3697,7 @@ msgstr "Drejtoria e dhënë s’ekziston." msgid "Updated media directory" msgstr "U përditësua drejtori mediash" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3811,7 +3708,7 @@ msgstr "" "tek-për-tek të shumtë, përshi eDonkey, Kademlia, Overnet, BitTorrent dhe " "DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3822,7 +3719,7 @@ msgstr "" "edhe përmes çfarëdo ndërfaqeje më vete, për celular ose desktop, ose telnet. " "Shihni doracakun." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3830,16 +3727,16 @@ msgstr "" "Te {box_name}, kartelat e shkarkuara mund të gjenden te drejtoria /var/lib/" "mldonkey/." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Shkarkoni kartela duke përdorur aplikacione eDonkey" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Dhënie-marrje Kartelash Tek-për-tek" @@ -3851,7 +3748,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3871,7 +3768,7 @@ msgstr "" "OpenPGP. Për më tepër hollësi, shihni dokumentimin e Monkeysphere-s për SSH." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3889,7 +3786,7 @@ msgstr "" "instalojë ndonjë program që që mund të kihet prej sajtit Monkeysphere." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -4014,7 +3911,7 @@ msgstr "U publikuar te shërbyes kyçesh." msgid "Error occurred while publishing key." msgstr "Gabim gjatë botimit të kyçit." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -4022,7 +3919,7 @@ msgstr "" "Mumble është një <em>software</em> me burim të hapur, për " "fjalosje me zë, të fshehtëzuar, <em>low-latency</em>." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4032,11 +3929,11 @@ msgstr "" "64738. Ka klientë klientë të gatshëm për " "t’u lidhur me Mumble-in që nga desktopi apo pajisjet tuaja Android." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Fjalosje Me Zë" @@ -4095,7 +3992,7 @@ msgstr "Krejt aplikacionet web" msgid "Services" msgstr "Shërbime" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4103,7 +4000,7 @@ msgstr "" "Formësoni pajisje rrjeti. Lidhuni në Internet përmes Ethernet-i, Wi-Fi ose " "PPPoE. Ndajeni atë lidhje me pajisje të tjera në rrjet." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4111,11 +4008,11 @@ msgstr "" "Pajisjet e administruara përmes metodash të tjera mund të mos jenë të " "pranishme për formësim këtu." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Rrjete" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Po përdoret DNSSEC në IPv{kind}" @@ -4684,6 +4581,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Kjo lidhje s’është aktive." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Siguri" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5170,7 +5072,7 @@ msgstr "elementare" msgid "TUN or TAP interface" msgstr "Ndërfaqe TUN ose TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5260,7 +5162,7 @@ msgstr "Lidhja {name} u fshi." msgid "Failed to delete connection: Connection not found." msgstr "S’u arrit të fshihet lidhje: S’u gjet lidhje." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5277,20 +5179,20 @@ msgstr "" "brendshme të dhëna nga {box_name}. Mund të hyni edhe në Internet përmes " "{box_name}-it, për më tepër siguri dhe anonimitet." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Lidhuni me shërbime VPN" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Rrjet Virtual Privat" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5371,7 +5273,7 @@ msgstr "" msgid "Download my profile" msgstr "Shkarko profilin tim" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5384,19 +5286,19 @@ msgstr "" "{box_name}-it tuaj janë të pakapshme nga pjesa tjetër e Internetit. Kjo " "përfshin gjendjet vijuese:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} gjendet pas një firewall-i të kufizuar." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} është i lidhur te një rrugëzues (pa fill), të cilin nuk e " "kontrolloni ju." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5404,7 +5306,7 @@ msgstr "" "ISP-ja juaj s’ju furnizon një adresë IP të jashtme dhe në vend të kësaj ju " "jep lidhje Internet përmes NAT-i." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5412,11 +5314,11 @@ msgstr "" "ISP-ja juaj s’ju furnizon një adresë IP statike dhe adresa juaj IP ndryshon " "sa herë që lidheni në Internet." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "ISP-ja juaj kufizon lidhjet ardhëse." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5431,15 +5333,15 @@ msgstr "" "të ardhmen mund të jetë e mundshme të përdorni {box_name}-in e një shokut " "tuaj për këtë." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "E dukshme Publikisht" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "Përkatësi PageKite" @@ -5585,12 +5487,12 @@ msgstr "" "Shihni udhëzime ujdisjeje klienti SSH" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Funksionim" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5601,7 +5503,7 @@ msgstr "" "rregullsi përdorimi dhe nëse hardware-i është apo jo i mbingarkuar nga " "përdorues dhe shërbime." -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5609,7 +5511,7 @@ msgstr "" "Matjet mbi funksionimin grumbullohen nga Performance Co-Pilot dhe mund të " "shihen duke përdorur aplikacionin Cockpit." -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Mbikëqyrje Sistemi" @@ -5680,7 +5582,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Fike Tani" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5691,7 +5593,7 @@ msgstr "" "faqesh web dhe kryesh HTTP, kontrollim hyrjesh, dhe heqje reklamash dhe të " "tjera hedhurina të papëlqyeshme Internet. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5706,20 +5608,20 @@ msgstr "" "për të mund të shihni te http://config." "privoxy.org/ ose http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Ndërmjetës Web" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Hapni {url} me ndërmjetësin {proxy} në tcp{kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5736,7 +5638,7 @@ msgstr "" "në linjë dhe një ose më tepër klientë Quassel prej një desktopi ose celulari " "mund të përdoren për t’u lidhur dhe shkëputur prej tij." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your desktopi dhe celulari juaj." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "Klient IRC" @@ -5760,7 +5662,7 @@ msgstr "Klient IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5776,7 +5678,7 @@ msgstr "" "Radicale mund të hyhet nga cilido përdorues me kredenciale hyrjeje në " "{box_name}." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5786,12 +5688,12 @@ msgstr "" "të ri dhe librash adresash. Nuk mbulon shtim veprimtarish ose kontaktesh, " "çka duhen bërë duke përdorur një tjetër klient." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Kalendar dhe Libër adresash" @@ -5873,7 +5775,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Formësimi i të drejtave për hyrje u përditësua" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5886,7 +5788,7 @@ msgstr "" "për MIME, libër adresash, manipulim dosjesh, kërkim në mesazhe dhe kontroll " "drejtshkrimi." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5900,7 +5802,7 @@ msgstr "" "IMAP përmes SSL (e rekomanduar), plotësoni fushën e shërbyesit, bie fjala, " "imaps://imap.shembull.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5916,11 +5818,11 @@ msgstr "" "Google (https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "Klient Email" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5928,7 +5830,7 @@ msgstr "" "Samba lejon të ndani me të tjerë kartela dhe dosje mes FreedomBox-it dhe " "kompjuterave të tjerë në rrjetin tuaj vendor." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5942,11 +5844,11 @@ msgstr "" "{hostname}.local (në Linux dhe Mac). Ka tre lloje ndarjesh nga mund të " "zgjidhni " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Pjesë e hapët - e përdorshme nga cilido në rrjetin tuaj vendor." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5954,7 +5856,7 @@ msgstr "" "Pjesë grupi - e përdorshme vetëm nga përdorues të FreedomBox-it të cilët " "janë pjesë e grupit freedombox-share." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5962,15 +5864,15 @@ msgstr "" "Pjesë Home - cilido përdorues në grupin freedombox-share mund të ketë " "hapësirën e vet private." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Hyrje te ndarje private" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Depozitë Kartelash Në Rrjet" @@ -6088,7 +5990,7 @@ msgstr "Pjesa u çaktivizua." msgid "Error disabling share: {error_message}" msgstr "Gabim teksa çaktivizohej pjesë: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6096,7 +5998,7 @@ msgstr "" "Searx është një motor tejkërkimesh Internet që respekton privatësinë. " "Grumbullon dhe shfaq përfundime prej shumë motorësh kërkimi." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6104,15 +6006,15 @@ msgstr "" "Searx mund të përdoret për të shmangur gjurmim dhe profilizim nga motorë " "kërkimesh. Si parazgjedhje, nuk depoziton cookies." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Kërkoni në internet" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Kërkim në Web" @@ -6289,11 +6191,11 @@ msgstr "Gabim në ujdisje hyrjeje të kufizuar: {exception}" msgid "Updated security configuration" msgstr "U përditësua formësim sigurie" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli ju lejon të ruani dhe ndani faqerojtës me të tjerët." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6301,15 +6203,15 @@ msgstr "" "Mbani parasysh se Shaarli mbulon vetëm një llogari të vetme përdoruesi, të " "cilën duhet ta ujdisni gjatë vizitës fillestare." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Faqerojtës" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6319,7 +6221,7 @@ msgstr "" "konceptuar të mbrojë trafikun tuaj Internet. Mund të përdoret për të " "anashkaluar filtrim dhe censurim Interneti." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6332,7 +6234,7 @@ msgstr "" "Pajisjet vendore mund të lidhen te ky ndërmjetës, dhe të dhënat e tyre do të " "fshehtëzohen dhe ndërmjetësohen përmes shërbyesit Shadowsocks." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6341,11 +6243,11 @@ msgstr "" "pajisjen, shfletuesin ose aplikacionin tuaj caktoni http://" "freedombox_address:1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Ndërmjetës SOCKS5" @@ -6484,7 +6386,7 @@ msgstr "Përpunoni Pjesë" msgid "Share deleted." msgstr "Pjesa u fshi." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6494,7 +6396,7 @@ msgstr "" "kartelash. Këto mund të përdoren për të kthyer sistemin te një gjendje e " "mëparshme e njohur si e mirë, në rast ndryshimesh të padëshiruar te sistemi." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6505,7 +6407,7 @@ msgstr "" "dhe gjithashtu para dhe pas instalimit të një software-i. Fotografimet e " "vjetra do të spastrohen automatikisht, në përputhje me rregullimet më poshtë." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for kopjeruajtjet, ngaqë mund të rikthehen vetëm në të " "njëjtën pjesë. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Depozito Fotografime" @@ -6721,7 +6623,7 @@ msgstr "Që të plotësohet prapakthimi, duhet rinisur sistemi." msgid "Rollback to Snapshot" msgstr "Prapaktheje te Fotografim" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6733,7 +6635,7 @@ msgstr "" "një kompjuter i largët i autorizuar mund të kryejë punë administrimi, të " "kopjojë kartela ose të xhirojë shërbime të tjera." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Shërbyes Shelli të Sigurt (SSH)" @@ -6779,7 +6681,7 @@ msgstr "Mirëfilltësimi SSH me fjalëkalim u çaktivizua." msgid "SSH authentication with password enabled." msgstr "Mirëfilltësimi SSH me fjalëkalim u aktivizua." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Hyrje Njëshe" @@ -6787,7 +6689,7 @@ msgstr "Hyrje Njëshe" msgid "Login" msgstr "Hyrje" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6799,107 +6701,107 @@ msgstr "" "përdorim, të montoni dhe çmontoni media të heqshme, të zgjeroni pjesën " "rrënjë, etj." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Depozitë" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bajte" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Veprimi dështoi." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Veprimi u anulua." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Pajisja po çmontohet tashmë." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Veprimi nuk mbulohet, për shkak se mungon mbulimi për përudhësin/mjetin." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Veprimit i mbaroi koha." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Veprimi do të zgjonte një disk që është në gjendjen “deep-sleep”." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Po përpiqet të çmontohet një pajisje që është e zënë." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Veprimi është anuluar tashmë." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "I paautorizuar për kryerjen e veprimit të kërkuar." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Pajisja është e çmontuar tashmë." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Pajisja s’është e montuar." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "S’i lejohet të përdorë mundësinë e kërkuar." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Pajisja është montuar nga tjetër përdorues." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Hapësirë e ulët në pjesë sistemi: {percent_used}% të përdorura, {free_space} " "të lira." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Hapësirë disku e pamjaftueshme" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Shumë afër dështimi disku" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -7023,7 +6925,7 @@ msgstr "Pajisja mund të hiqet pa rrezik." msgid "Error ejecting device: {error_message}" msgstr "Gabim në nxjerrje pajisjeje: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -7031,7 +6933,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7043,20 +6945,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Administroni aplikacionin Syncthing" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Njëkohësim Kartelash" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7069,7 +6971,7 @@ msgstr "" "nëse dështojnë disa nga nyjat. kartelat tuaja mund të rimerren nga nyjat e " "mbetura." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7080,11 +6982,11 @@ msgstr "" "Mund të shtohen paraqitës shtesë, të cilët do të paraqesin këtë nyjë dhe " "nyja të tjera depozitimi." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Depozitim i Shpërndarë Kartelash" @@ -7123,7 +7025,7 @@ msgstr "Paraqitës të lidhur" msgid "Remove" msgstr "Hiqe" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7137,40 +7039,40 @@ msgstr "" "përdorni Shfletuesin Tor." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Shërbim Onion Tor" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Ndërmjetës SOCKS Tor" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Rele Ure Tor" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Portë releje Tor e gatshme" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "URL hyrjesh {url} në tcp{kind} përmes Tor-i" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Ripohoni përdorim Tor-i te {url} në tcp{kind}" @@ -7303,58 +7205,54 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Lexues Prurjesh Lajmesh" @@ -7362,12 +7260,12 @@ msgstr "Lexues Prurjesh Lajmesh" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7375,30 +7273,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Përditësoje" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Përditësime" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox-i u Përditësua" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7564,14 +7469,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7579,15 +7484,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Përdorues dhe Grupe" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7813,18 +7718,18 @@ msgstr "Ndryshoni Fjalëkalimin" msgid "Password changed successfully." msgstr "Fjalëkalimi u ndryshua me sukses." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8118,7 +8023,7 @@ msgstr "Fshije Lidhjen me Shërbyesin" msgid "Server deleted." msgstr "Shërbyesi u fshi." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8127,7 +8032,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8136,28 +8041,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "Adresë" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8175,7 +8080,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8188,7 +8093,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8196,11 +8101,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Sistemues Fotografish" @@ -8234,23 +8139,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Elementar" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Gabim gjatë instalimit" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "po instalohet" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "po shkarkohet" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "ndryshim media" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "kartelë formësimi: {file}" @@ -8311,6 +8216,10 @@ msgstr "" msgid " Home" msgstr " Kreu" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Kreu" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Aplikacione" @@ -8583,5 +8492,65 @@ msgstr "" msgid "Gujarati" msgstr "Gujaratase" +#, fuzzy +#~| msgid "Directory does not exist." +#~ msgid "User does not exist" +#~ msgstr "Drejtoria s’ekziston." + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "E çaktivizuar" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "kablloja është e lidhur" + +#, fuzzy +#~| msgid "Deleted selected snapshots" +#~ msgid "Delete selected" +#~ msgstr "U fshinë fotografimet e përzgjedhur" + +#, fuzzy +#~| msgid "Path is not a directory." +#~ msgid "You do not have a home directory." +#~ msgstr "Shtegu s’është drejtori." + +#, fuzzy +#~| msgid "Updated media directory" +#~ msgid "Create home directory" +#~ msgstr "U përditësua drejtori mediash" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Emri i përkatësisë u caktua" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "Gjendje Dëshmie" + +#, fuzzy +#~| msgid "Private key of this machine" +#~ msgid "Private key path" +#~ msgstr "Kyç privat i kësaj makine" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "Aktivizo dëmtim" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "E çaktivizuar" + #~ msgid "Past Vulnerabilities" #~ msgstr "Cenueshmëri të dikurshme" diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po index 19aa4dbe7..63c03566e 100644 --- a/plinth/locale/sr/LC_MESSAGES/django.po +++ b/plinth/locale/sr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Serbian calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1099,7 +1100,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1111,7 +1112,7 @@ msgstr "" "{box_name} ima specijalne funkcije koje nisu obično moguće. Web terminal je " "takođe dostupan." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1119,7 +1120,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1128,7 +1129,7 @@ msgstr "" "Pristup moguć korisnik na {box_name} koja " "pripada admin grupi." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1136,12 +1137,12 @@ msgstr "" "Cockpit-u se pristupa isključivo preko domena. Neće raditi preko IP adrese " "kao URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Kokpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Administracija Servera" @@ -1286,7 +1287,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1294,7 +1295,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1940,48 +1941,18 @@ msgstr "Domain Name Server" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -2006,16 +1977,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2032,167 +2042,75 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:29 #, fuzzy -#| msgid "Delete Archive" -msgid "Delete selected" -msgstr "Izbriši arhivu" +#| msgid "Enable DNSSEC" +msgid "Enable" +msgstr "Aktiviraj DNSSEC" -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Kreiraj novu rezervnu kopiju" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "Otkrivanje Servisa" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "Kreirajte repozitorij" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2200,7 +2118,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2232,19 +2150,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2320,7 +2225,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2331,21 +2236,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2706,7 +2611,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2714,31 +2619,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2775,14 +2680,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2791,15 +2696,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2876,11 +2781,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2888,11 +2793,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2911,17 +2816,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2930,7 +2835,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2940,7 +2845,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2948,15 +2853,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3057,7 +2962,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3067,14 +2972,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3145,7 +3050,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3153,7 +3058,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3162,18 +3067,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3257,7 +3162,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3266,11 +3171,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3336,7 +3241,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3347,15 +3252,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3395,36 +3300,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3436,7 +3341,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3448,7 +3353,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3459,7 +3364,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3581,24 +3486,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3651,23 +3556,23 @@ msgstr "" msgid "Services" msgstr "Služi" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4147,6 +4052,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4590,7 +4500,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4681,7 +4591,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4692,20 +4602,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4769,7 +4679,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4778,33 +4688,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4813,15 +4723,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4955,25 +4865,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -5034,14 +4944,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5051,20 +4961,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5075,7 +4985,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5095,7 +5005,7 @@ msgstr "" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5105,19 +5015,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5186,7 +5096,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5194,7 +5104,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5203,7 +5113,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5213,17 +5123,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5232,31 +5142,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5366,27 +5276,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5541,32 +5451,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5575,17 +5485,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5714,14 +5624,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5729,14 +5639,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5928,7 +5838,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5936,7 +5846,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5977,7 +5887,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5985,7 +5895,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5993,104 +5903,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6204,7 +6114,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6212,7 +6122,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6224,20 +6134,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6245,7 +6155,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6253,11 +6163,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6292,7 +6202,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6301,40 +6211,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6460,58 +6370,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6519,12 +6425,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6532,30 +6438,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6721,14 +6634,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6736,15 +6649,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6970,18 +6883,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7275,7 +7188,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7284,7 +7197,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7293,26 +7206,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7326,7 +7239,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7339,7 +7252,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7347,11 +7260,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7385,23 +7298,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7462,6 +7375,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" @@ -7734,6 +7651,16 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Delete Archive" +#~ msgid "Delete selected" +#~ msgstr "Izbriši arhivu" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "Kreirajte repozitorij" + #, fuzzy #~| msgid "Enable application" #~ msgid "Administer calibre application" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index d3e6db4a8..41f5dbaae 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-11-04 02:39+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1044,15 +1045,15 @@ msgstr "" "Endast användare som tillhör calibre -gruppen kan komma åt appen. " "Alla användare med åtkomst kan använda alla bibliotek." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Använd calibre e-bokbibliotek" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "E-bok Bibliotek" @@ -1126,7 +1127,7 @@ msgstr "{name} borttagen." msgid "Could not delete {name}: {error}" msgstr "Kunde inte ta bort {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1139,7 +1140,7 @@ msgstr "" "tillgängliga för många avancerade funktioner som vanligtvis inte krävs. En " "webbaserad terminal för konsoloperationer är också tillgänglig." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1151,7 +1152,7 @@ msgstr "" "anpassade brandväggsportar och avancerade nätverk som bindning, bryggning " "och VLAN-hantering." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1160,7 +1161,7 @@ msgstr "" "Den kan nås genom att alla användar på " "{box_name} som hör till administratörsgruppen." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1168,12 +1169,12 @@ msgstr "" "Cockpit kräver att du öppnar den via ett domännamn. Det kommer inte att " "fungera när de nås med en IP-adress som en del av webbadressen." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Server administrering" @@ -1335,7 +1336,7 @@ msgstr "Visar avancerade appar och funktioner" msgid "Hiding advanced apps and features" msgstr "Dölja avancerade appar och funktioner" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1347,7 +1348,7 @@ msgstr "" "WebRTC, SIP och andra kommunikationsservrar kan använda den för att upprätta " "ett samtal mellan parter som annars inte kan ansluta till varandra." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse eller ejabberd måste " "konfigureras med de uppgifter som tillhandahålls här." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "VoIP-hjälpare" @@ -1393,7 +1394,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Använd följande delade autentiseringshemligheter:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1401,11 +1402,11 @@ msgstr "" "Network time server är ett program som upprätthåller synkronisering av " "systemtiden med servrar på Internet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Datum & Tid" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Tid synkroniserad till NTP-server" @@ -1434,13 +1435,13 @@ msgstr "Fel i inställning av tidszon: {exception}" msgid "Time zone set" msgstr "Tidszon inställd" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" "Deluge är en BitTorrentklient som inkluderar ett Webbaserat " "användargränssnitt." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1448,17 +1449,17 @@ msgstr "" "Standardlösenordet är \"deluge\", men du bör logga in och ändra det " "omedelbart efter att du har aktiverat den här tjänsten." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Ladda ner filer med BitTorrent-applikationer" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "BitTorrent Webbklient" @@ -1484,18 +1485,18 @@ msgid "Diagnostics" msgstr "Diagnostik" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "passerade" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "misslyckades" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "fel" @@ -1585,7 +1586,7 @@ msgstr "Resultat" msgid "Diagnostic Test" msgstr "Diagnostiktest" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1593,12 +1594,12 @@ msgstr "" "diaspora * är ett decentraliserat socialt nätverk där du kan lagra och " "kontrollera dina egna data." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Federerat Social Network" @@ -1659,7 +1660,7 @@ msgstr "Användarregistreringar aktiverade" msgid "User registrations disabled" msgstr "Användarregistreringar avaktiveras" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1670,7 +1671,7 @@ msgstr "" "kan det vara svårt för andra att hitta dig på nätet. Detta förhindrar andra " "att nå de tjänster som tillhandahålls av denna {box_name}." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1687,11 +1688,11 @@ msgstr "" "servern ditt DNS-namn till din nya IP, och om någon från Internet ber om " "ditt DNS-namn, kommer hen att få din aktuella IP som svar." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Klient för Dynamisk DNS" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Dynamiskt Domännamn" @@ -1927,7 +1928,7 @@ msgstr "Konfigurera Dynamisk DNS" msgid "Dynamic DNS Status" msgstr "Dynamisk DNS (Domän Namns Server) status" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1935,7 +1936,7 @@ msgstr "" "XMPP är en öppen och standardiserad kommunikationsprotokoll. Här kan du köra " "din XMPP-server (kallad ejabberd)." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web client användare med en {box_name} inloggning." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn eller konfigurera en extern server." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabbert" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Chat-Server" @@ -2083,7 +2084,8 @@ msgstr "" msgid "" "During installation, any other email servers in the system will be " "uninstalled." -msgstr "Under installationen avinstalleras alla andra e-postservrar i systemet." +msgstr "" +"Under installationen avinstalleras alla andra e-postservrar i systemet." #: plinth/modules/email_server/__init__.py:68 msgid "Email Server" @@ -2093,48 +2095,18 @@ msgstr "E-postserver" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Drivs av Postfix, Dovecot och Rspamd" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "Aliasnamnet togs" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "Måste vara minst 2 tecken lång" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "Innehåller otillåtna tecken" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "Måste börja och sluta med a-z eller 0-9" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "Kan inte vara ett nummer" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "Konfiguration av Postfix domännamn" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "Användaren finns inte" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Integrering av Postfix-Dovecot SASL" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "Postfix alias kartor" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "Postfix lokala mottagarkartor" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "RoundCube tillgänglighet" @@ -2159,16 +2131,61 @@ msgstr "Postfix använder ett TLS -certifikat" msgid "Has a TLS certificate" msgstr "Har ett TLS-certifikat" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Ange ett giltigt användarnamn." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Ange ett giltigt användarnamn." + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "domain" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "Nytt alias (utan @domän)" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "Innehåller otillåtna tecken" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "Måste börja och sluta med a-z eller 0-9" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "Kan inte vara ett nummer" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "My Aliases" +msgid "Aliases" +msgstr "Mina alias" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Aktiverad" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Inaktiverad" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2185,159 +2202,77 @@ msgstr "K-9 Mail" msgid "FairEmail" msgstr "FairEmail" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "Hantera alias" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "Du har inga e-postalias." -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" -msgstr "Inaktivera markerad" +#: plinth/modules/email_server/templates/email_alias.html:24 +#, fuzzy +#| msgid "Disabled" +msgid "Disable" +msgstr "Inaktiverad" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "Aktivera markerad" +#, fuzzy +#| msgid "Enabled" +msgid "Enable" +msgstr "Aktiverad" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "Tabort valda" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "Skapa ett nytt e -postalias" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Lägg till" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "Nytt värde" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Uppdatera" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "Ett problem uppstod med din begäran. Var god försök igen." - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "Postfix TLS" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "Dovecot TLS" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "Besök Rspamd administrationsgränssnitt" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "Servicevarning" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "Reparera" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "Du har ingen arbetskatalog." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "Skapa en för att börja ta emot e-post." - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "Skapa arbetskatalog" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "Din hemkatalog är redo att ta emot e-post." - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "Behåll nuvarande inställningar" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "Använd Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "Vanligt namn" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "Använd anpassade värden" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "Sökväg för certifikat" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "Sökväg för den privata nyckeln" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "Använd systemstandard" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Hem" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "Min e-post" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "Mina alias" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Säkerhet" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "Domäner" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Hantera ögonblicksbilder" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "Servicevarning" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "Reparera" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "Internt fel i {0}" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "Kontrollera syslog för mer information" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" -msgstr "Aktiverade alias" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Ett fel inträffade under konfiguration." -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "Inaktiverade alias" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Instänllningar oförändrade" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2348,7 +2283,7 @@ msgstr "" "nätverkstrafiken på din {box_name}. Att ha en brandvägg aktiverad och " "korrekt konfigurerad minskar risken för säkerhetshot från Internet." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Brandvägg" @@ -2384,19 +2319,6 @@ msgstr "" msgid "Service/Port" msgstr "Service/Port" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Aktiverad" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Inaktiverad" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Tillåtna" @@ -2482,7 +2404,7 @@ msgstr "Starta installationsprogrammet" msgid "Setup Complete" msgstr "Installationen Klar" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2500,7 +2422,7 @@ msgstr "" "Git-klient eller med flera tillgängliga grafiska klienter. Och du kan dela " "din kod med människor runt om i världen." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2508,15 +2430,15 @@ msgstr "" "För att lära dig mer om hur du använder Git besökGit handledning." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Läs-skrivåtkomst till Git-respositories" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Enkelt Git hosting" @@ -2946,7 +2868,7 @@ msgstr "Om {box_name}" msgid "{box_name} Manual" msgstr "{box_name} Manual" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2958,7 +2880,7 @@ msgstr "" "anonymitet genom att skicka krypterad trafik via ett volontärstyrt nätverk " "distribuerat över hela världen." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -2966,7 +2888,7 @@ msgstr "" "För att hitta mer information om I2P på deras projekthemsida." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2974,19 +2896,19 @@ msgstr "" "Det första besöket i det medföljande webbgränssnittet kommer att initiera " "konfigurationsprocessen." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Hantera I2P appen" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Anonymitetsnätverk" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2P proxy" @@ -3031,7 +2953,7 @@ msgstr "" "to-peer-nätverk. Ladda ner filer genom att lägga till torrenter eller skapa " "en ny torrent för att dela en fil." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3041,7 +2963,7 @@ msgstr "" "lightweight pålägg språken, inklusive markdown, och gemensam blogging " "funktionellitet sådan som kommentarerna och RSS feeds." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3054,15 +2976,15 @@ msgstr "" "redigera befindliga. I Användarkonfiguration kan du ändra dessa behörigheter eller lägga till nya användare." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "Ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki och Blogg" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Visa och redigera wiki-applikationer" @@ -3141,11 +3063,11 @@ msgstr "{title} borttagen." msgid "Could not delete {title}: {error}" msgstr "Kunde inte ta bort {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted är en server för Gobby, en kollaborativ textredigerare." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3156,11 +3078,11 @@ msgstr "" ", desktop client och installera det. Starta sedan Gobby och välj " "\"Anslut till server\" och ange ditt {box_name} domännamn." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "Infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby-Server" @@ -3181,7 +3103,7 @@ msgstr "" "Starta Gobby och välj \"Anslut till server\" och ange ditt {box_name} " "domännamn." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3189,11 +3111,11 @@ msgstr "" "JSXC är en webbklient för XMPP. Vanligtvis används den med en XMPP-server " "som körs lokalt." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Chat klient" @@ -3202,7 +3124,7 @@ msgstr "Chat klient" msgid "JavaScript license information" msgstr "JavaScript-licensinformation" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3217,7 +3139,7 @@ msgstr "" "domän. Detta sker genom att den bevisar sig vara ägare till en domän för " "Let's Encrypt, en auktoriserad certifikatutfärdare ." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3229,15 +3151,15 @@ msgstr "" "Läs igenom och acceptera Let's Encrypt användaravtal innan du använder denna tjänst." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Låt oss kryptera" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Certifikaterna" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "Kan inte testa: Inga domäner är konfigurerade." @@ -3342,7 +3264,7 @@ msgstr "Certifikatet framgångsrikt återkallat för domänen {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Det gick inte att ta bort certifikatet för domänen {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3359,7 +3281,7 @@ msgstr "" "fungera. Användare på en given Matrix-server kan samtala med användare på " "alla andra Matrix-servrar via federation." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3368,7 +3290,7 @@ msgstr "" "Matrix Synapse behöver en STUN/TURN-server för ljud-/videosamtal. Installera " "Coturn-appen eller konfigurera en extern server." -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3463,7 +3385,7 @@ msgstr "" "certifikat. Gå till Let's Encrypt för " "att få en sådan." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3475,7 +3397,7 @@ msgstr "" "kan använda Media att vara värd för en wiki-liknande webbplats, göra " "anteckningar eller samarbeta med vänner på projekt." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3489,7 +3411,7 @@ msgstr "" "fler användarkonton från MediaWiki själv genom att gå till Special: Skapa konto sida." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3497,12 +3419,12 @@ msgstr "" "Alla som har en länk till denna wiki kan läsa den. Endast användare som är " "inloggade kan göra ändringar i innehållet." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Wiki" @@ -3595,7 +3517,7 @@ msgstr "Standardskal ändrat" msgid "Server URL updated" msgstr "Serverns URL har uppdaterats" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3608,11 +3530,11 @@ msgstr "" "(30000). För att ansluta till servern, en Minetest klient behövs." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Block sandbox" @@ -3683,7 +3605,7 @@ msgstr "PVP-konfiguration uppdaterad" msgid "Damage configuration updated" msgstr "Skadekonfiguration uppdaterad" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3700,15 +3622,15 @@ msgstr "" "certifiering som bärbara mediaspelare, smartphones, TV-apparater och " "spelsystem (såsom PS3 och Xbox 360) eller applikationer som totem och Kodi." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Media Streaming Server" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Enkel mediaserver" @@ -3753,7 +3675,7 @@ msgstr "Den angivna katalogen finns inte." msgid "Updated media directory" msgstr "Uppdaterad mediekatalog" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3763,7 +3685,7 @@ msgstr "" "stora filer. Det kan delta i flera peer-to-peer-nätverk, inklusive eDonkey, " "Kademlia, Overnet, BitTorrent och DirectConnect." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3774,23 +3696,23 @@ msgstr "" "någon av de separata mobil-eller skrivbords frontend-ändarna eller ett " "Telnet-gränssnitt. Se manualen." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" "På {box_name}, kan nedladdade filer hittas i /var/lib/mldonkey/ mappen." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Ladda ner filer med eDonkey program" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "Mldonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-peer fildelning" @@ -3802,7 +3724,7 @@ msgstr "KML Donkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3822,7 +3744,7 @@ msgstr "" "Se " "Monkeysphere SSH dokumentation för mer information." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3840,7 +3762,7 @@ msgstr "" "program som finns på Monkeyshere webbsida." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3964,7 +3886,7 @@ msgstr "Publicerade nyckeln till nyckelserver." msgid "Error occurred while publishing key." msgstr "Fel uppstod när nyckeln publicerades." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3972,7 +3894,7 @@ msgstr "" "Mumble är ett program för röstchatt med öppen källkod, låg latens, " "kryptering och hög ljudkvalitet." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3982,11 +3904,11 @@ msgstr "" "\"http://mumble.info\"> Appar finns för att ansluta till Mumble från din " "dator- och Android-enheter." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Röstchatt" @@ -4044,7 +3966,7 @@ msgstr "Alla webbappar" msgid "Services" msgstr "Tjänster" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4052,7 +3974,7 @@ msgstr "" "Konfigurera nätverksenheter. Anslut till Internet via Ethernet, Wi-Fi eller " "PPPoE. Dela den anslutningen med andra enheter i nätverket." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4060,11 +3982,11 @@ msgstr "" "Enheter som administreras via andra metoder kanske inte är tillgängliga för " "konfiguration här." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Nätverk" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Använder DNSSEC på IPv{kind}" @@ -4631,6 +4553,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Den här anslutningen är inte aktiv." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Säkerhet" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5115,7 +5042,7 @@ msgstr "generisk" msgid "TUN or TAP interface" msgstr "TUN- eller TAP-gränssnitt" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5206,7 +5133,7 @@ msgstr "Anslutning {name} borttagen." msgid "Failed to delete connection: Connection not found." msgstr "Det gick inte att ta bort anslutning: Anslutning hittades inte." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5223,20 +5150,20 @@ msgstr "" "tillhandahålls av {box_name}. Du kan också komma åt resten av Internet via " "{box_name} för ökad säkerhet och anonymitet." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Ansluta till VPN-tjänster" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Virtuellt privat nätverk" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5317,7 +5244,7 @@ msgstr "" msgid "Download my profile" msgstr "Ladda ner min profil" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5330,18 +5257,18 @@ msgstr "" "tjänster inte kan nås från resten av Internet. Detta inkluderar följande " "situationer:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} är bakom en begränsad brandvägg." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} är anslutet till en (trådlös) router som du inte kontrollerar." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5349,7 +5276,7 @@ msgstr "" "Din ISP ger dig inte en extern IP-adress och ger istället Internet " "uppkoppling via NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5357,11 +5284,11 @@ msgstr "" "Din ISP ger dig inte en statisk IP-adress och din IP-adress ändras varje " "gång du ansluter till Internet." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Din ISP begränsar inkommande anslutningar." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5375,15 +5302,15 @@ msgstr "" "pagekite. net . I framtiden kan det vara möjligt att använda din kompis " "{box_name} för detta." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Offentlig Synlighet" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "PageKite domän" @@ -5530,12 +5457,12 @@ msgstr "" "Se SSH-klientinstallation instruktioner" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Prestanda" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5546,7 +5473,7 @@ msgstr "" "användningsmönster och om hårdvaran är överbelastad av användare och " "tjänster." -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5554,7 +5481,7 @@ msgstr "" "Prestandamätvärden samlas in av Performance Co-Pilot och kan visas med " "Cockpit-appen." -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Systemövervakning" @@ -5625,7 +5552,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Stäng av nu" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5635,7 +5562,7 @@ msgstr "" "för att förbättra sekretessen, ändra webbsidan data och HTTP-huvuden, " "kontrollera åtkomst och ta bort annonser och andra avskyvärda Internet Junk. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5650,20 +5577,20 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ eller http://p.p." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Webbproxy" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Åtkomst till {url} med proxy {proxy} på TCP {kind}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5680,7 +5607,7 @@ msgstr "" "quassel-klienter från ett skrivbord eller en mobil kan användas för att " "ansluta och koppla från den." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your Desktop och mobila-enheter är tillgängliga." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC-klient" @@ -5704,7 +5631,7 @@ msgstr "IRC-klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5719,7 +5646,7 @@ msgstr "" "clients\">stöds klientprogram. Radicale kan nås av alla användare med en " "{box_name} inloggning." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5729,12 +5656,12 @@ msgstr "" "skapandet av nya kalendrar och adressböcker. Det stöder inte att lägga till " "händelser eller kontakter, som måste göras med hjälp av en separat klient." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Kalender och adressbok" @@ -5815,7 +5742,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Konfiguration av åtkomsträttigheter uppdaterad" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5827,7 +5754,7 @@ msgstr "" "förväntar dig från en e-postklient, inklusive MIME-stöd, adressbok, " "mappmanipulering, meddelande sökning och stavningskontroll." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5841,7 +5768,7 @@ msgstr "" "kryptering (rekommenderas), fyll server fält som imaps://imap.exempel." "kom." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5857,11 +5784,11 @@ msgstr "" "security/lesssecureapps\" >https://www.Google.com/settings/Security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "E-postklient" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5869,7 +5796,7 @@ msgstr "" "Samba gör det möjligt att dela filer och mappar mellan FreedomBox och andra " "datorer i ditt lokala nätverk." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5882,11 +5809,11 @@ msgstr "" "\\{hostname} (på Windows) eller SMB://{hostname}. local (på Linux och Mac). " "Det finns tre typer av shares som du kan välja mellan: " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Öppen delning - tillgänglig för alla i ditt lokala nätverk." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5894,7 +5821,7 @@ msgstr "" "Gruppdelning - endast tillgänglig för FreedomBox-användare som ingår i " "freedombox-delningsgruppen." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5902,15 +5829,15 @@ msgstr "" "Hemdelning - varje användare i gruppen freedombox-share kan ha sitt eget " "privata utrymme." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Tillgång till de privata shares" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Nätverk För Fillagring" @@ -6026,7 +5953,7 @@ msgstr "Share resurs inaktiverat." msgid "Error disabling share: {error_message}" msgstr "Fel vid inaktivering av resurs: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6034,7 +5961,7 @@ msgstr "" "Searx är en sekretess-respektera Internet metasökning motor. Det aggregrates " "och visar resultat från flera sökmotorer." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6042,15 +5969,15 @@ msgstr "" "Searx kan användas för att undvika spårning och profilering av sökmotorer. " "Den lagrar inga cookies som standard." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Sök på webben" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Webbsökning" @@ -6230,11 +6157,11 @@ msgstr "Fel vid inställning av begränsad åtkomst: {exception}" msgid "Updated security configuration" msgstr "Uppdaterad säkerhetskonfiguration" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli kan du spara och dela bokmärken." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6242,15 +6169,15 @@ msgstr "" "Observera att Shaarli endast stöd för ett enskilt användarkonto, som du " "behöver för att ställa den första besök." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Bokmärken" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6260,7 +6187,7 @@ msgstr "" "Internet-trafik. Det kan användas för att kringgå Internetfiltrering och " "censur." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6273,7 +6200,7 @@ msgstr "" "enheter kan ansluta till denna proxy och deras data kommer att krypteras och " "proxied via Shadowsocks-servern." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6281,11 +6208,11 @@ msgstr "" "Till använda Shadowsocks efter setup, sätta den SOCKS5 genom fullmakt URL i " "din anordning, beter eller applicering till http://freedombox_address: 1080/" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Socks5 proxy" @@ -6421,7 +6348,7 @@ msgstr "Redigera share" msgid "Share deleted." msgstr "Share borttagen." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6431,7 +6358,7 @@ msgstr "" "Dessa kan användas för att återställa systemet till ett tidigare känt skick " "i händelse av oönskade ändringar i systemet." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6442,7 +6369,7 @@ msgstr "" "även före och efter en programvaruinstallation. Äldre ögonblicksbilder " "kommer att rensas automatiskt enligt inställningarna nedan." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for säkerhetskopior eftersom de bara kan lagras på " "samma partition. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Ögonblicksbilder av lagring" @@ -6658,7 +6585,7 @@ msgstr "Systemet måste startas om för att slutföra återställningen." msgid "Rollback to Snapshot" msgstr "Återställning till ögonblicksbild" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6670,7 +6597,7 @@ msgstr "" "administrativa uppgifter, kopiera filer eller köra andra tjänster med sådana " "anslutningar." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell-Server (SSH)" @@ -6716,7 +6643,7 @@ msgstr "SSH-autentisering med lösenord inaktiverat." msgid "SSH authentication with password enabled." msgstr "SSH-autentisering med lösenord aktiverat." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Enkel inloggning på" @@ -6724,7 +6651,7 @@ msgstr "Enkel inloggning på" msgid "Login" msgstr "Logga in" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6735,106 +6662,106 @@ msgstr "" "{box_name}. Du kan visa lagringsmedia som för närvarande används, montera " "och demontera flyttbara media, expandera rotpartitionen etc." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Lagring" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} Kib" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Mib" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Gib" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Tib" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Åtgärden misslyckades." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Operationen avbröts." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Enheten lossnar redan." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "Åtgärden stöds inte på grund av saknade drivrutiner/verktygsstöd." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Åtgärden orsakade timeout." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Åtgärden skulle väcka en disk som är i ett djupviloläge." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Försöker avmontera en enhet som är upptagen." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Operationen har redan avbrutits." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "Inte behörig att utföra den begärda åtgärden." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Enheten är redan monterad." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Enheten är inte monterad." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "Inte tillåtet att använda det begärda alternativet." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Enheten monteras av en annan användare." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Lågt utrymme på systempartitionen: {percent_used}% används, {free_space} " "fritt." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Lågt diskutrymme" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Diskfel förestående" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6958,7 +6885,7 @@ msgstr "Enheten kan kopplas ur på ett säkert sätt." msgid "Error ejecting device: {error_message}" msgstr "Fel mata ut enhet: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6970,7 +6897,7 @@ msgstr "" "filer på en enhet kommer att replikeras automatiskt på alla andra enheter " "som också kör Syncthing." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6989,20 +6916,20 @@ msgstr "" "{box_name} är endast tillgängligt för användare som tillhör gruppen \"admin" "\" eller \"syncthing-access\"." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Administrera Syncthing-program" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Filsynkronisering" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7014,7 +6941,7 @@ msgstr "" "av lagringsnoder. Även om vissa noder misslyckas, kan dina filer hämtas från " "de återstående noderna." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7025,11 +6952,11 @@ msgstr "" "standard. Ytterligare introducerare kan läggas till, vilket kommer att " "introducera den här noden till andra lagringsnoder." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Distribuerad fillagring" @@ -7068,7 +6995,7 @@ msgstr "Anslutna introducerare" msgid "Remove" msgstr "Ta bort" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7082,40 +7009,40 @@ msgstr "" "använder TOR Browser." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Tor Onion service" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor SOCKS-proxy" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Tor relä port tillgänglig" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registrerad" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registrerad" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tillgång URL {url} på TCP {kind} via Tor" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekräfta Tor-användning vid {url} på TCP {kind}" @@ -7265,17 +7192,13 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "En Tor SOCKS-port finns på din %(box_name)s på TCP-port 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Instänllningar oförändrade" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" "Transmission är en BitTorrentklient som inkluderar ett Webbaserat " "användargränssnitt." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7283,16 +7206,16 @@ msgstr "" "BitTorrent är ett peer-to-peer-fildelningsprotokoll. Observera att " "BitTorrent inte är anonym." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "Vänligen ändra inte standardporten för transmissionsdemonen." -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7302,7 +7225,7 @@ msgstr "" "utformats för att läsa nyheter från vilken plats som helst, samtidigt som du " "känner dig så nära en riktig stationär applikation som möjligt." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any användare med en {box_name} login." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7319,15 +7242,15 @@ msgstr "" "När du använder en mobil eller stationär applikation för Tiny Tiny RSS, " "Använd URL/tt-rss-app/\" för att ansluta." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Läsa och prenumerera på nyhetsflöden" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Läsare för nyhetsflödet" @@ -7335,13 +7258,13 @@ msgstr "Läsare för nyhetsflödet" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" "Sök efter och installera de senaste program-och säkerhetsuppdateringarna." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7354,19 +7277,26 @@ msgstr "" "systemet bedöms vara nödvändigt, det sker automatiskt vid 02:00 orsakar alla " "apps för att vara tillgängligt en kort stund." -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Uppdatera" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Uppdateringar" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox uppdaterad" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "Det gick inte att starta distributionsuppdatering" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " @@ -7377,11 +7307,11 @@ msgstr "" "Distributionsuppdateringen kommer att göras ett nytt behov efter 24 timmar, " "om det är aktiverat." -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "Distributionsuppdateringen har startats" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7574,7 +7504,7 @@ msgstr "Det gick inte att starta uppgraderingen." msgid "Frequent feature updates activated." msgstr "Frekventa funktionsuppdateringar aktiverade." -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7585,7 +7515,7 @@ msgstr "" "ett användarkonto för att vara en del av en grupp för att auktorisera " "användaren att komma åt appen." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7596,15 +7526,15 @@ msgstr "" "över appar som är relevanta för dem på startsidan. Endast användare av " "gruppen admin kan dock ändra appar eller Systeminställningar." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Användare och grupper" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Tillgång till alla tjänster och Systeminställningar" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrollera LDAP-posten \"{search_item}\"" @@ -7851,11 +7781,11 @@ msgstr "Ändra lösenord" msgid "Password changed successfully." msgstr "Lösenordet har ändrats." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard är en snabb, modern, säker VPN-tunnel." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7864,7 +7794,7 @@ msgstr "" "Den kan användas för att ansluta till en VPN-leverantör som stöder WireGuard " "och för att dirigera all utgående trafik från {box_name} via VPN." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8184,7 +8114,7 @@ msgstr "Ta bort anslutning till server" msgid "Server deleted." msgstr "Servern har tagits bort." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8198,7 +8128,7 @@ msgstr "" "med hjälp av teman. Administrationsgränssnittet och producerade webbsidor är " "lämpliga för mobila enheter." -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8212,7 +8142,7 @@ msgstr "" "administratörsgränssnittet för bättre webbadresser till dina sidor och " "inlägg." -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " @@ -8223,7 +8153,7 @@ msgstr "" "sidan som ett bokmärke för att nå administrationsgränssnittet i " "framtiden." -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " @@ -8233,12 +8163,12 @@ msgstr "" "databasuppgradering från administratörsgränssnittet. Ytterligare plugins " "eller teman kan installeras och uppgraderas på egen risk." -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "Webbplats och blogg" @@ -8255,7 +8185,7 @@ msgstr "" "WordPress-webbplatsen eller bloggen. Aktivera endast efter den första " "installationen av WordPress." -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8276,7 +8206,7 @@ msgstr "" "på en plats med hjälp av sök-, kart- och kalendervyer. Enskilda foton kan " "delas med andra genom att skicka en direktlänk." -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8287,11 +8217,11 @@ msgstr "" "i Zoph. För ytterligare användare måste konton skapas både i {box_name} och " "i Zoph med samma användarnamn." -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Foto Organizer" @@ -8329,23 +8259,23 @@ msgstr "Pppoe" msgid "Generic" msgstr "Generiska" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Fel vid installation" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "Installera" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "ladda ner" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "Mediabyte" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -8414,6 +8344,10 @@ msgstr "Kärnfunktioner och webbgränssnitt för %(box_name)s" msgid " Home" msgstr " Hem" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Hem" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Appar" @@ -8717,6 +8651,84 @@ msgstr "%(percentage)s %% färdigt" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "The alias was taken" +#~ msgstr "Aliasnamnet togs" + +#~ msgid "Must be at least 2 characters long" +#~ msgstr "Måste vara minst 2 tecken lång" + +#~ msgid "User does not exist" +#~ msgstr "Användaren finns inte" + +#~ msgid "Postfix local recipient maps" +#~ msgstr "Postfix lokala mottagarkartor" + +#~ msgid "Disable selected" +#~ msgstr "Inaktivera markerad" + +#~ msgid "Enable selected" +#~ msgstr "Aktivera markerad" + +#~ msgid "Delete selected" +#~ msgstr "Tabort valda" + +#~ msgid "New value" +#~ msgstr "Nytt värde" + +#~ msgid "There was a problem with your request. Please try again." +#~ msgstr "Ett problem uppstod med din begäran. Var god försök igen." + +#~ msgid "Postfix TLS" +#~ msgstr "Postfix TLS" + +#~ msgid "Dovecot TLS" +#~ msgstr "Dovecot TLS" + +#~ msgid "Visit Rspamd administration interface" +#~ msgstr "Besök Rspamd administrationsgränssnitt" + +#~ msgid "You do not have a home directory." +#~ msgstr "Du har ingen arbetskatalog." + +#~ msgid "Create one to begin receiving emails." +#~ msgstr "Skapa en för att börja ta emot e-post." + +#~ msgid "Create home directory" +#~ msgstr "Skapa arbetskatalog" + +#~ msgid "Your home directory is ready to receive emails." +#~ msgstr "Din hemkatalog är redo att ta emot e-post." + +#~ msgid "Keep current settings" +#~ msgstr "Behåll nuvarande inställningar" + +#~ msgid "Use Let's Encrypt" +#~ msgstr "Använd Let's Encrypt" + +#~ msgid "Common name" +#~ msgstr "Vanligt namn" + +#~ msgid "Use custom values" +#~ msgstr "Använd anpassade värden" + +#~ msgid "Certificate path" +#~ msgstr "Sökväg för certifikat" + +#~ msgid "Private key path" +#~ msgstr "Sökväg för den privata nyckeln" + +#~ msgid "Use system default" +#~ msgstr "Använd systemstandard" + +#~ msgid "My Mail" +#~ msgstr "Min e-post" + +#~ msgid "Enabled aliases" +#~ msgstr "Aktiverade alias" + +#~ msgid "Disabled aliases" +#~ msgstr "Inaktiverade alias" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Det går inte att ta bort den enda administratören i systemet." diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index 2a42899e7..8983edd7c 100644 --- a/plinth/locale/ta/LC_MESSAGES/django.po +++ b/plinth/locale/ta/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:83 +#: plinth/context_processors.py:23 plinth/views.py:81 msgid "FreedomBox" msgstr "" @@ -87,17 +87,17 @@ msgstr "" msgid "Error installing application: {error}" msgstr "" -#: plinth/modules/apache/__init__.py:41 +#: plinth/modules/apache/__init__.py:42 msgid "Apache HTTP Server" msgstr "" -#: plinth/modules/apache/__init__.py:44 +#: plinth/modules/apache/__init__.py:48 #: plinth/modules/monkeysphere/templates/monkeysphere.html:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:46 msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:50 +#: plinth/modules/apache/__init__.py:54 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -112,7 +112,7 @@ msgstr "" msgid "Access URL {url}" msgstr "" -#: plinth/modules/avahi/__init__.py:35 +#: plinth/modules/avahi/__init__.py:36 #, python-brace-format msgid "" "Service discovery allows other devices on the network to discover your " @@ -123,48 +123,48 @@ msgid "" "network." msgstr "" -#: plinth/modules/avahi/__init__.py:59 +#: plinth/modules/avahi/__init__.py:60 msgid "Service Discovery" msgstr "" -#: plinth/modules/avahi/__init__.py:69 +#: plinth/modules/avahi/__init__.py:73 msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:34 +#: plinth/modules/backups/__init__.py:35 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:54 plinth/modules/backups/__init__.py:200 -#: plinth/modules/backups/__init__.py:245 +#: plinth/modules/backups/__init__.py:56 plinth/modules/backups/__init__.py:205 +#: plinth/modules/backups/__init__.py:250 msgid "Backups" msgstr "" -#: plinth/modules/backups/__init__.py:197 +#: plinth/modules/backups/__init__.py:202 msgid "" "Enable an automatic backup schedule for data safety. Prefer an encrypted " "remote backup location or an extra attached disk." msgstr "" -#: plinth/modules/backups/__init__.py:203 +#: plinth/modules/backups/__init__.py:208 msgid "Enable a Backup Schedule" msgstr "" -#: plinth/modules/backups/__init__.py:207 -#: plinth/modules/backups/__init__.py:254 -#: plinth/modules/storage/__init__.py:323 +#: plinth/modules/backups/__init__.py:212 +#: plinth/modules/backups/__init__.py:259 +#: plinth/modules/storage/__init__.py:328 #, python-brace-format msgid "Go to {app_name}" msgstr "" -#: plinth/modules/backups/__init__.py:242 +#: plinth/modules/backups/__init__.py:247 #, python-brace-format msgid "" "A scheduled backup failed. Past {error_count} attempts for backup did not " "succeed. The latest error is: {error_message}" msgstr "" -#: plinth/modules/backups/__init__.py:250 +#: plinth/modules/backups/__init__.py:255 msgid "Error During Backup" msgstr "" @@ -681,7 +681,7 @@ msgstr "" msgid "Mounting failed" msgstr "" -#: plinth/modules/bepasty/__init__.py:24 +#: plinth/modules/bepasty/__init__.py:25 msgid "" "bepasty is a web application that allows large files to be uploaded and " "shared. Text and code snippets can also be pasted and shared. Text, image, " @@ -689,7 +689,7 @@ msgid "" "can be set to expire after a time period." msgstr "" -#: plinth/modules/bepasty/__init__.py:28 +#: plinth/modules/bepasty/__init__.py:29 msgid "" "bepasty does not use usernames for login. It only uses passwords. For each " "password, a set of permissions can be selected. Once you have created a " @@ -697,7 +697,7 @@ msgid "" "permissions." msgstr "" -#: plinth/modules/bepasty/__init__.py:32 +#: plinth/modules/bepasty/__init__.py:33 msgid "" "You can also create multiple passwords with the same set of privileges, and " "distribute them to different people or groups. This will allow you to later " @@ -705,39 +705,39 @@ msgid "" "the list." msgstr "" -#: plinth/modules/bepasty/__init__.py:41 plinth/modules/bepasty/__init__.py:50 +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 msgid "Read a file, if a web link to the file is available" msgstr "" -#: plinth/modules/bepasty/__init__.py:42 +#: plinth/modules/bepasty/__init__.py:43 msgid "Create or upload files" msgstr "" -#: plinth/modules/bepasty/__init__.py:43 +#: plinth/modules/bepasty/__init__.py:44 msgid "List all files and their web links" msgstr "" -#: plinth/modules/bepasty/__init__.py:44 +#: plinth/modules/bepasty/__init__.py:45 msgid "Delete files" msgstr "" -#: plinth/modules/bepasty/__init__.py:45 +#: plinth/modules/bepasty/__init__.py:46 msgid "Administer files: lock/unlock files" msgstr "" -#: plinth/modules/bepasty/__init__.py:49 +#: plinth/modules/bepasty/__init__.py:50 msgid "None, password is always required" msgstr "" -#: plinth/modules/bepasty/__init__.py:51 +#: plinth/modules/bepasty/__init__.py:52 msgid "List and read all files" msgstr "" -#: plinth/modules/bepasty/__init__.py:64 plinth/modules/bepasty/manifest.py:6 +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:6 msgid "bepasty" msgstr "" -#: plinth/modules/bepasty/__init__.py:66 +#: plinth/modules/bepasty/__init__.py:67 msgid "File & Snippet Sharing" msgstr "" @@ -813,6 +813,7 @@ msgid "List" msgstr "" #: plinth/modules/bepasty/views.py:52 +#: plinth/modules/email_server/templates/email_alias.html:28 #: plinth/modules/letsencrypt/templates/letsencrypt.html:86 #: plinth/modules/networks/templates/connection_show.html:56 #: plinth/modules/samba/templates/samba.html:154 @@ -851,13 +852,13 @@ msgstr "" msgid "Password deleted." msgstr "" -#: plinth/modules/bind/__init__.py:30 +#: plinth/modules/bind/__init__.py:31 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." msgstr "" -#: plinth/modules/bind/__init__.py:34 +#: plinth/modules/bind/__init__.py:35 #, python-brace-format msgid "" "Currently, on {box_name}, BIND is only used to resolve DNS queries for other " @@ -865,11 +866,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:78 +#: plinth/modules/bind/__init__.py:80 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:79 +#: plinth/modules/bind/__init__.py:81 msgid "Domain Name Server" msgstr "" @@ -922,7 +923,7 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:214 #: plinth/modules/matrixsynapse/views.py:124 plinth/modules/mumble/views.py:28 #: plinth/modules/pagekite/forms.py:78 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 @@ -930,7 +931,7 @@ msgstr "" msgid "Configuration updated" msgstr "" -#: plinth/modules/calibre/__init__.py:31 +#: plinth/modules/calibre/__init__.py:32 #, python-brace-format msgid "" "calibre server provides online access to your e-book collection. You can " @@ -938,7 +939,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/calibre/__init__.py:34 +#: plinth/modules/calibre/__init__.py:35 msgid "" "You can organize your e-books, extract and edit their metadata, and perform " "advanced search. calibre can import, export, or convert across a wide range " @@ -947,21 +948,21 @@ msgid "" "highlighted text. Content distribution using OPDS is currently not supported." msgstr "" -#: plinth/modules/calibre/__init__.py:40 +#: plinth/modules/calibre/__init__.py:41 msgid "" "Only users belonging to calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1033,7 +1034,7 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1042,7 +1043,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1050,25 +1051,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1213,7 +1214,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1221,7 +1222,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1865,48 +1866,18 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1931,16 +1902,55 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +msgid "Enter a valid domain" +msgstr "" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +msgid "Aliases" +msgstr "" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1957,159 +1967,69 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" +msgid "Enable" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +msgid "Manage Spam" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +msgid "Error updating configuration" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2117,7 +2037,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2149,19 +2069,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2237,7 +2144,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2248,21 +2155,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2623,7 +2530,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2631,31 +2538,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2692,14 +2599,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2708,15 +2615,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2793,11 +2700,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2805,11 +2712,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2828,17 +2735,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2847,7 +2754,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2857,7 +2764,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2865,15 +2772,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -2974,7 +2881,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2984,14 +2891,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3062,7 +2969,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3070,7 +2977,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3079,18 +2986,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3172,7 +3079,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3181,11 +3088,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3251,7 +3158,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3262,15 +3169,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3310,36 +3217,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3351,7 +3258,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3363,7 +3270,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3374,7 +3281,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3496,24 +3403,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3564,23 +3471,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4060,6 +3967,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4497,7 +4409,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4586,7 +4498,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4597,20 +4509,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4674,7 +4586,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4683,33 +4595,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4718,15 +4630,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4860,25 +4772,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4939,14 +4851,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4956,20 +4868,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4980,7 +4892,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5000,7 +4912,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5010,19 +4922,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5089,7 +5001,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5097,7 +5009,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5106,7 +5018,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5116,17 +5028,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5135,31 +5047,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5267,27 +5179,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5442,32 +5354,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5476,17 +5388,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5615,14 +5527,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5630,14 +5542,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5827,7 +5739,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5835,7 +5747,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5876,7 +5788,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5884,7 +5796,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5892,104 +5804,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6103,7 +6015,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6111,7 +6023,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6123,20 +6035,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6144,7 +6056,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6152,11 +6064,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6191,7 +6103,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6200,40 +6112,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6359,58 +6271,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6418,12 +6326,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6431,30 +6339,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6620,14 +6535,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6635,15 +6550,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6869,18 +6784,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7174,7 +7089,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7183,7 +7098,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7192,26 +7107,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7225,7 +7140,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7238,7 +7153,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7246,11 +7161,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7284,23 +7199,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7361,6 +7276,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index 0a1e63107..a67dc390a 100644 --- a/plinth/locale/te/LC_MESSAGES/django.po +++ b/plinth/locale/te/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-05-17 18:31+0000\n" "Last-Translator: chilumula vamshi krishna \n" "Language-Team: Telugu calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "" @@ -1121,7 +1122,7 @@ msgstr "{name} తొలగించబడింది." msgid "Could not delete {name}: {error}" msgstr "{name} ను తొలగించలేము: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1133,7 +1134,7 @@ msgstr "" "చేస్తుంది. ఈ {box_name},లొ సాధారణంగా అవసరం లేని అనేక ఆధునిక ఫంక్షన్లకు నియంత్రణలు అందుబాటులో " "ఉన్నాయి.కన్సోల్ ఆపరేషన్లకు వెబ్ ఆధారిత టెర్మినల్ కూడా అందుబాటులో ఉంది." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1141,7 +1142,7 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -1158,18 +1159,18 @@ msgstr "" "ద్వారా పొందవచ్చు {box_name}.\n" "అంగీకార సమాచారం మరియు సిస్టమ్ మార్చడం సామర్ధ్యాలు నిర్వాహక సమూహం చెందిన వినియోగదారులకు పరిమితం." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "కాక్పిట్" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "సేవిక పరిపాలన" @@ -1327,7 +1328,7 @@ msgstr "అధునాతన అనువర్తనాలు మరియు msgid "Hiding advanced apps and features" msgstr "అధునాతన అనువర్తనాలు మరియు విశేషాంశాలు దాచబడుతున్నాయి" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1335,7 +1336,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as XMPP క్లయింట్ ఉపయోగించవచ్చు." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ఈజాబ్బర్డి" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "కబుర్ల సేవిక" @@ -2078,52 +2079,20 @@ msgstr "కబుర్ల సేవిక" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "అధికారక్షేత్రం పేరు అమర్పులోపం: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -#, fuzzy -#| msgid "Directory does not exist." -msgid "User does not exist" -msgstr "డైరెక్టరీ ఉనికిలో లేదు." - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Available Domains" @@ -2152,18 +2121,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "ధృవీకరణ పత్రం లేదు" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "సేవిక పేరు చెలదు" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "సేవిక పేరు చెలదు" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "డొమైన్" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Create User" +msgid "Aliases" +msgstr "వినియోగదారుని సృష్టించు" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "క్రియాశీలం" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "నిలిపివేయబడింది" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "రౌండ్ క్యూబ్" @@ -2182,190 +2196,83 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Create User" msgid "Manage Aliases" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "నిలిపివేయబడింది" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "కేబుల్ అనుసంధానించబడిన" +#| msgid "Enabled" +msgid "Enable" +msgstr "క్రియాశీలం" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete all the snapshots" -msgid "Delete selected" -msgstr "అన్ని స్నాప్షాట్‌లను తొలగించు" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "క్రొత్త బ్యాకప్‌ను సృష్టించండి" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "జోడించు" -#: plinth/modules/email_server/templates/email_domains.html:19 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "డొమైన్లు" + +#: plinth/modules/email_server/templates/email_server.html:19 #, fuzzy -#| msgid "Backups" -msgid "New value" -msgstr "బ్యాకప్స్" +#| msgid "Storage Snapshots" +msgid "Manage Spam" +msgstr "నిల్వ దృశ్యములు" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "నవీకరణ" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "సేవా రకం" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Download directory" -msgid "You do not have a home directory." -msgstr "డైరెక్టరీని దిగుమతి చేయు" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Updated media directory" -msgid "Create home directory" -msgstr "మీడియా డైరెక్టరీని నవీకరించబడింది" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "ప్రస్తుత స్థితి:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Let's Encrypt" -msgid "Use Let's Encrypt" -msgstr "లెట్స్ ఎన్క్రిప్ట్" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "అధికారక్షేత్రం పేరు అమర్పు" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "యోగ్యతాపత్రం స్థితి" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create User" -msgid "Private key path" -msgstr "వినియోగదారుని సృష్టించు" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "ముంగిలి" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "భద్రత" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "డొమైన్లు" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -msgid "Enabled aliases" -msgstr "PageKite ప్రారంభించు" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "నిలిపివేయబడింది" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "మారకుండా అమర్చుతోంది" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2375,7 +2282,7 @@ msgstr "" "ఫైర్వాల్ అనేది మీ {box_name}కు జరిగే రవాణా రాకపోకలను నియంత్రించే ఒక భద్రతా వ్యవస్థ. దీనిని అనుమతించి " "సరిగా ఆకృతీకరిస్తే అంతర్జాలం నుంచి భద్రతా ముప్పు తగ్గుతుంది." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "ఫైర్వాల్" @@ -2413,19 +2320,6 @@ msgstr "" msgid "Service/Port" msgstr "సేవ/పోర్ట్" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "క్రియాశీలం" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "నిలిపివేయబడింది" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "అనుమతించబడిన" @@ -2504,7 +2398,7 @@ msgstr "అమరికను ప్రారంభించు" msgid "Setup Complete" msgstr "అమరక పూర్తయ్యింది" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2515,7 +2409,7 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 #, fuzzy msgid "" "To learn more on how to use Git visit Git tutorial ని సందర్శించండి." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2971,7 +2865,7 @@ msgstr "{box_name} గురించి" msgid "{box_name} Manual" msgstr "{box_name} కరదీపిక" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2979,7 +2873,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s వికీ ను దర్శించండి." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "అనువర్తనాన్ని చేతనించు" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "అజ్ఞాత జాలిక" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 #, fuzzy msgid "I2P Proxy" msgstr "వెబ్ ప్రాక్సీ (Privoxy)" @@ -3049,7 +2943,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -3066,7 +2960,7 @@ msgstr "" "ఎస్ ఫీడ్లు వంటి సాధారణ బ్లాగింగ్ కార్యాచరణకు సహకరిస్తుంది. దీన్ని ఆమోదించినప్పుడు మీ బ్లాగులు మరియు " "వికీలు /ikiwiki వద్ద అందుబాటులో ఉంటాయి(తయారుచేసిన తరువాత)." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, fuzzy, python-brace-format #| msgid "" #| "Only {box_name} users in the admin group can create and " @@ -3084,15 +2978,15 @@ msgstr "" "ఇప్పటికే ఉన్న వాటిని సవరించగలరు. వినియోగదారు " "ఆకృతీకరణ లో మీరు అనుమతులను మార్చవచ్చు లేదా క్రొత్త వినియోగదారులను చేర్చవచ్చు." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ఇకివికీ" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "వికీ మరియు బ్లాగ్" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "వికీ అనువర్తనాలను చూడండి మరియు మార్చండి" @@ -3172,11 +3066,11 @@ msgstr "{name} తొలగించబడింది." msgid "Could not delete {title}: {error}" msgstr "{title} ను తొలగించలేము: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "Gobby కోసం ఇన్ఫినోటెడ్ అనేది ఒక సర్వర్,ఒక సహకార టెక్స్ట్ ఎడిటర్." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3187,11 +3081,11 @@ msgstr "" "మరియు నిక్షిప్తం చెయుము. మొడటిగ గాబ్బి మరియు సెలెక్ట్ \"సర్వర్కు కనెక్ట్ చేయండి\" మరియు మీ ఎంటర్ చెయ్యండి " "{box_name}'s డొమైన్ పేరు." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "ఇన్ఫినోటెడ్" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "గాబ్బీ సేవకం" @@ -3212,18 +3106,18 @@ msgstr "" "గాబ్బీని ప్రారంభించి. \"సేవికకు కనెక్ట్ చేయండి\" ఎంచుకోండి మరియు మీ {box_name} యొక్క డొమైన్ పేరును " "నమోదు చేయండి." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" "JSXC XMPP కోసం ఒక వెబ్ కక్షిదారి. సాధారణంగా ఇది ఒక XMPP సర్వర్ స్థానికంగా అమలు చేయటానికి ఉపయోగిస్తారు." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "చాట్ క్లయింట్" @@ -3232,7 +3126,7 @@ msgstr "చాట్ క్లయింట్" msgid "JavaScript license information" msgstr "జావాస్క్రిప్ట్ లైసెన్స్ సమాచరం" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, fuzzy, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3246,7 +3140,7 @@ msgstr "" "కొరకు సెటప్ డిజిటల్ సర్టిఫికెట్లు చేయవచ్చు. ఇది ఎన్క్రిప్ట్ తెలపండి ఒక డొమైన్ యొక్క యజమాని, ధృవపత్ర (CA) " "ఉన్నట్లు రుజువు చేసుకుంటూ అవుతున్నారు." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 #, fuzzy msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " @@ -3259,15 +3153,15 @@ msgstr "" "\"https://letsencrypt.org/repository/\"> 1Let యొక్క ఎన్క్రిప్ట్ సబ్స్క్రయిబర్ ఒప్పందం 2 తో అంగీకరిస్తున్నారు." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "లెట్స్ ఎన్క్రిప్ట్" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "యోగ్యతాపత్రాలు" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3369,7 +3263,7 @@ msgstr "{domain} డోమైన్ కొరకు సర్టిఫికే msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు ధృవీకరణపత్రం నిర్మూలించడంలో విఫలం: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3379,14 +3273,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "మ్యాట్రిక్స్ సినాప్స్" @@ -3471,7 +3365,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3482,7 +3376,7 @@ msgstr "" "వెబ్సైటు నిర్మించే ఒక ఉపకరం. మీరు మీడియావికీని ఉపయోగించి ఒక వికీ లాంటి వెబ్సైటును ఏర్పాటు చేస్కుని మీ " "స్నేహితులతో సంయుక్తంగా నోట్స్ తీసుకొనవచ్చు." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3491,19 +3385,19 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" "ఈ వికీకి లింక్తో ఎవరైనా దానిని చదవగలరు. లాగిన్ చేయబడిన వినియోగదారులు మాత్రమే కంటెంట్కు మార్పులు చేయవచ్చు." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "మీడియావికీ" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "వికీ" @@ -3599,7 +3493,7 @@ msgstr "డిఫాల్ట్ చర్మం మార్చబడింద msgid "Server URL updated" msgstr "{name} తొలగించబడింది." -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3611,11 +3505,11 @@ msgstr "" "Minetest సర్వర్ ఈ {box_name} 1 అమలు సహకరిస్తుంది. సర్వర్కు కనెక్ట్ చెయ్యడానికి ఒక 2Minetest క్లైంట్ 3 అవసరమవుతుంది." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "మైన్ టెస్ట్" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "బ్లాక్ శాండ్‌బాక్స్‌" @@ -3701,7 +3595,7 @@ msgstr "ఆకృతీకరణ నవీకరించబడింది" msgid "Damage configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3712,15 +3606,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "సరళమైన మీడియా సేవిక" @@ -3760,38 +3654,38 @@ msgstr "నిర్దేశిత డైరెక్టరీ ఉనికి msgid "Updated media directory" msgstr "మీడియా డైరెక్టరీని నవీకరించబడింది" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" msgstr "బిట్ టోరెంట్ అనువర్తనాలను ఉపయోగించి ఫైళ్లను డౌన్లోడ్ చేయండి" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "ఎంఎల్ డాంకీ" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "పీర్-టు-పీర్ ఫైల్ షేరింగ్" @@ -3807,7 +3701,7 @@ msgstr "మంకీస్ఫియర్" msgid "AMLDonkey" msgstr "మంకీస్ఫియర్" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 #, fuzzy msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " @@ -3825,7 +3719,7 @@ msgstr "" "వినియోగదారులు కోసం, కనీసం ఒక వ్యక్తి (సాధారణంగా యంత్రం యజమాని) సాధారణ OpenPGP తాలమ్ సంతకం " "ప్రక్రియను ఉపయోగించి ప్రవేశ ద్వారం చేయాలి." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 #, fuzzy msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " @@ -3842,7 +3736,7 @@ msgstr "" "ధ్రువీకరించడానికి, వినియోగదారుడు " "1 Monkeysphere వెబ్సైట్ అందుబాటులో ఉంది కొన్ని సాఫ్ట్వేర్ ఇన్స్టాల్ చెయ్యాలి" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "మంకీస్ఫియర్" @@ -3966,7 +3860,7 @@ msgstr "కీ కీసేవకానికి ప్రచురించబ msgid "Error occurred while publishing key." msgstr "కీని ప్రచురించేటప్పుడు దోషం సంభవించింది." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3974,7 +3868,7 @@ msgstr "" "మంబుల్ అనేది తక్కువ-జాప్యత, ఎన్క్రిప్టెడ్, అధిక నాణ్యతా వంటి విశిష్టలతో కూడిన ఒక ఓపెన్ సోర్స్ స్వర సంభాషణా " "సాఫ్ట్‌వేర్." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 #, fuzzy msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. 1Clients 2 మీ నమలు సర్వర్ కనెక్ట్ చేయవచ్చు మరియు Android పరికరాలు " "అందుబాటులో ఉన్నాయి." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "మంబుల్" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "స్వర సంభాషణ" @@ -4046,23 +3940,23 @@ msgstr "" msgid "Services" msgstr "సేవ" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "ఇతర పద్ధతుల ద్వారా నిర్వహించబడే పరికరాలు ఇక్కడ ఆకృతీకరణకు అందుబాటులో ఉండకపోవచ్చు." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "అల్లికలు" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "IPv{kind} పై DNSSEC ఉపయోగించు" @@ -4572,6 +4466,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "ఈ అనుసంధానం చురుకుగాలేదు." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "భద్రత" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5067,7 +4966,7 @@ msgstr "సాధారణమైన" msgid "TUN or TAP interface" msgstr "అంతర్ముఖం" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "వైర్గార్డ్" @@ -5165,7 +5064,7 @@ msgstr "{name} అనుసంధానం తొలగించబడింద msgid "Failed to delete connection: Connection not found." msgstr "అనుసంధానం తొలగించడం విఫలమైంది: అనుసంధానం దొరకలేదు." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, fuzzy, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5181,24 +5080,24 @@ msgstr "" "మిగిలిన ఇంటర్నెట్ను యాక్సెస్ చేయవచ్చు మీ {box_name} 1 అనుసంధానించవచ్చు అదనపు భద్రత మరియు " "అనామకత్వం కోసం." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "అనుసంధాన రకం" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "తెరచిన" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "వర్చువల్ ప్రైవేట్ నెట్వర్క్" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5270,7 +5169,7 @@ msgstr "ప్రొఫైల్ ప్రతి %(box_name)s వాడుకర msgid "Download my profile" msgstr "నా స్థూలవివరంల దిగుమతి" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, fuzzy, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5282,17 +5181,17 @@ msgstr "" "లేనప్పుడు కోసం ఒక వ్యవస్థ. మీ {box_name} 2 సేవలు ఇంటర్నెట్ మిగిలిన నుండి అందుబాటులో ఉంటే మీరు " "మాత్రమే ఈ అవసరం. ఈ క్రింది సందర్భాలలో కలిగి:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, fuzzy, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{Box_name} 1 నిరోధిత ఫైర్వాల్ వెనుక ఉంది." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, fuzzy, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{Box_name} 1 మీరు నియంత్రించే లేని ఒక (వైర్లెస్) రౌటర్ అనుసంధానించబడిన." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 #, fuzzy msgid "" "Your ISP does not provide you an external IP address and instead provides " @@ -5301,7 +5200,7 @@ msgstr "" "మీ ISP మీరు ఒక బాహ్య IP చిరునామా అందించడం లేదు మరియు బదులుగా NAT ద్వారా ఇంటర్నెట్ కనెక్షన్ " "అందిస్తుంది." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 #, fuzzy msgid "" "Your ISP does not provide you a static IP address and your IP address " @@ -5310,12 +5209,12 @@ msgstr "" "మీ ISP మీరు స్టాటిక్ IP చిరునామా అందించడం లేదు మరియు మీ IP చిరునామా మీరు ఇంటర్నెట్ కు కనెక్ట్ ప్రతి " "సమయ మార్పులు." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 #, fuzzy msgid "Your ISP limits incoming connections." msgstr "మీ ISP ఇన్కమింగ్ కనెక్షన్లను పరిమితం చేస్తుంది." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5334,18 +5233,18 @@ msgstr "" "ఉపయోగించడానికి 3 సాధ్యం కావచ్చు ఉదాహరణకు pagekite." "net కోసం, ఏ pagekite సేవా ప్రదాత ఉపయోగించవచ్చు." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 #, fuzzy #| msgid "Pagekite" msgid "PageKite" msgstr "పేజ్ కైట్" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 #, fuzzy msgid "Public Visibility" msgstr "పబ్లిక్ దృష్టి గోచరత (PageKite)" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 #, fuzzy msgid "PageKite Domain" msgstr "PageKite ఖాతా" @@ -5496,25 +5395,25 @@ msgstr "" "SSH క్లైంట్ సెటప్ చూడండి సూచనలు " -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" @@ -5588,7 +5487,7 @@ msgstr "" msgid "Shut Down Now" msgstr "ఇపుడు మూసివేయండి" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5598,7 +5497,7 @@ msgstr "" "నియంత్రించడం మరియు ప్రకటనలను మరియు ఇతర చెడ్డ ఇంటర్నెట్ వ్యర్థాలను తొలగించడం కోసం ఆధునిక ఫిల్టరింగ్ " "సామర్థ్యాలతో ఒక కాని క్యాచింగ్ వెబ్ ప్రాక్సీ. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5612,20 +5511,20 @@ msgstr "" "డాక్యుమెంటేషన్ http://config.privoxy.org/ లేదా http://p.p లో చూడవచ్చు." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "ప్రివొక్సి" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "వెబ్ ప్రాక్సీ" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "టీసీపీ{kind} పై{proxy} తో యాక్సిస్ {url} చేయండి" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5636,7 +5535,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "క్వాసెల్" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC క్లయింట్" @@ -5656,7 +5555,7 @@ msgstr "IRC క్లయింట్" msgid "Quasseldroid" msgstr "క్వాసెల్ డ్రొఇడ్" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5670,19 +5569,19 @@ msgstr "" "\"> supported client application అవసరం.\n" "రాడికల్ ఏ యూజర్ అయినా {box_name}లాగిన్ తో యాక్సెస్ చేయవచ్చు" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "రాడికేల్" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "క్యాలెండర్ మరియు అడ్రస్సు పుస్తకము" @@ -5760,7 +5659,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5771,7 +5670,7 @@ msgstr "" "ఇది MIME మద్దతు, చిరునామా పుస్తకం, ఫోల్డర్ తారుమారు, సందేశ శోధన మరియు అక్షరక్రమ తనిఖీ సహా ఒక " "ఇమెయిల్ క్లయింట్ నుండి మీరు పూర్తి కార్యాచరణను అందిస్తుంది." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5780,7 +5679,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5790,11 +5689,11 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "ఇమెయిల్ క్లయింట్" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5802,7 +5701,7 @@ msgstr "" "మీ స్థానిక నెట్‌వర్క్‌లోని ఫ్రీడమ్‌బాక్స్ మరియు ఇతర కంప్యూటర్ల మధ్య ఫైల్‌లు మరియు ఫోల్డర్‌లను పంచుకోవడానికి సాంబా " "అనుమతిస్తుంది." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5811,11 +5710,11 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "ఓపెన్ షేర్ - మీ స్థానిక నెట్‌వర్క్‌లోని ప్రతి ఒక్కరికీ అందుబాటులో ఉంటుంది." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5823,7 +5722,7 @@ msgstr "" "గ్రూప్ షేర్ - freedombox-share గ్రూపులో ఉన్న ఫ్రీడమ్‌బాక్స్ వినియోగదారులకు మాత్రమే అందుబాటులో " "ఉంటుంది." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5831,15 +5730,15 @@ msgstr "" "హోమ్ షేర్ - freedombox-share గ్రూపులో ఉన్న ప్రతి వినియోగదారుడు వారి స్వంత ప్రైవేట్ స్థలాన్ని కలిగి " "ఉంటారు." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "ప్రైవేటు షేర్లలో ప్రవేశం" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "సాంబా" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -5980,7 +5879,7 @@ msgstr "పంచుకోబడ్డ" msgid "Error disabling share: {error_message}" msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5988,7 +5887,7 @@ msgstr "" "సెర్క్స్ అనేది గోప్యతను గౌరవించే ఒక మెటా-శోధన ఇంజిన్. ఇది బహుళ శోధన ఇంజిన్ల నుండి ఫలితాలను సమీకరించి, " "ప్రదర్శిస్తుంది." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -5996,15 +5895,15 @@ msgstr "" "శోధన యంత్రాలు ద్వారా ట్రాకింగ్ మరియు ప్రొఫైలింగ్ను నివారించడానికి సెర్క్స్ ను ఉపయోగించవచ్చు. ఇది మాములుగా " "కుకీలను నిల్వ ఉంచుకోదు." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "అంతర్జాలమును శోధింపుము" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "సేర్క్స్" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "వెబ్ శోధన" @@ -6183,28 +6082,28 @@ msgstr "సమయమండలం అమర్పులోపం: {exception}" msgid "Updated security configuration" msgstr "సాధారణ ఆకృతీకరణ" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "రు బుక్మార్క్లు ని సేవ్ మరియు పంచుకొనుటకు షార్లి అనుమతిస్తుంది." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "షార్లి" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 #, fuzzy msgid "Bookmarks" msgstr "" "గుర్తుంచు\n" " (Shaarli)" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6213,7 +6112,7 @@ msgstr "" "షాడోసాక్స్ మీ ఇంటర్నెట్ ట్రాఫిక్ను రక్షించేందుకు రూపొందించబడిన ఒక తేలికైన మరియు సురక్షిత సాక్స్5 ప్రాక్సీ. " "ఇది ఇంటర్నెట్ వడపోత మరియు సెన్సార్షిప్ను దాటడానికి ఉపయోగించవచ్చు." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6222,17 +6121,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "షాడోసాక్స్" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "సాక్స్5 ప్రాక్సీ" @@ -6385,14 +6284,14 @@ msgstr "వినియోగదారి మార్పు" msgid "Share deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6400,14 +6299,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "నిల్వ దృశ్యములు" @@ -6625,7 +6524,7 @@ msgstr "రొల్ల్బచ్క్ ని పూర్తి చేయడ msgid "Rollback to Snapshot" msgstr "చాయాచిత్రం కు రొల్ల్బచ్క్ చేయండి" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6633,7 +6532,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "సెక్యూర్ షెల్ (SSH) సర్వర్" @@ -6680,7 +6579,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "సింగిల్ సైన్ ఆన్" @@ -6688,7 +6587,7 @@ msgstr "సింగిల్ సైన్ ఆన్" msgid "Login" msgstr "ప్రవేశించు" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6696,111 +6595,111 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 #, fuzzy msgid "Storage" msgstr "అన్హొస్టెడ్ స్టోరేజ్ ని (పునరుద్ధరించండి)" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} బైట్లు" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} కిలోబైట్లు" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} మెగాబైట్లు" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} గిగాబైట్లు" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} టెరాబైట్లు" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 #, fuzzy #| msgid "Mumble server is running" msgid "The device is already unmounting." msgstr "మంబ్లు సేవిక నడుస్తుంది" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "ఆపరేషన్ టైమవుట్ అయింది." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "ఈ ఆపరేషన్ గాఢ నిద్రలో ఉన్న ఒక డిస్క్ ను మేల్కొలుపుతుంది." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 #, fuzzy msgid "Attempting to unmount a device that is busy." msgstr "బిజీగా ఉన్న పరికరాన్ని అన్ మౌంట్ చేయడానికి ప్రయత్నిస్తోంది." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "ఆపరేషన్ ఇప్పటికే రద్దు చేయబడింది." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "అభ్యర్థించిన ఆపరేషన్ చేయడానికి అధికారం లేదు." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 #, fuzzy msgid "The device is already mounted." msgstr "ఈ సేవ ఇప్పటికే ఉంది" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 #, fuzzy #| msgid "Mumble server is not running" msgid "The device is not mounted." msgstr "మంబ్లు సేవిక నడవంలేదు" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "అభ్యర్థించిన ఎంపికను ఉపయోగించడానికి అనుమతి లేదు." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "పరికరం మరొక వినియోగదారుచే మౌంట్ చేయబడింది." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6929,7 +6828,7 @@ msgstr "పరికరాన్ని సురక్షితంగా తొ msgid "Error ejecting device: {error_message}" msgstr "పరికరాన్ని తొలగించడంలో లోపం: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 #, fuzzy msgid "" "Syncthing is an application to synchronize files across multiple devices, e." @@ -6941,7 +6840,7 @@ msgstr "" "ఒక ఉపకరణంలో ఒక ఫైలు యొక్క తయారీ,మార్పులు, లేదా నిర్మూలిస్తే అది మిగిలిన అన్ని ఉపకరణాలలో దానికి " "సంబందించిన మార్పులు చెయ్యడం సమకాలీకరించడం" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6953,22 +6852,22 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" msgstr "ఈ అనువర్తనాన్ని నిక్షిప్తం చేయాలా?" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "సింక్ తింగ్" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "ఫైళ్ళ సమకాలీకరణ" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6979,7 +6878,7 @@ msgstr "" "చేయడానికి ప్రొవైడర్ స్వతంత్ర భద్రతను ఉపయోగిస్తుంది. కొన్ని నోడ్లు విఫలమైనప్పటికీ, మిగిలిన ఫైళ్ళ నుండి మీ " "ఫైళ్ళను తిరిగి పొందవచ్చు." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6987,11 +6886,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "తాహో-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "పంపిణీ ఫైల్ నిల్వ" @@ -7029,7 +6928,7 @@ msgstr "కనెక్ట్ చేసిన పరిచయకర్తలు" msgid "Remove" msgstr "తొలగించు" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7042,44 +6941,44 @@ msgstr "" "టార్ ప్రాజెక్ట్ మీరు టార్ బ్రౌజర్ ను ఉపయోగించాలని సిఫార్సు చేస్తున్నారు." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "టార్" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "దాచిన టార్ సర్వీస్" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 #, fuzzy #| msgid "Socks5 Proxy" msgid "Tor Socks Proxy" msgstr "సాక్స్5 ప్రాక్సీ" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "టార్ బ్రిడ్జ్ రిలే" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "టార్ రిలే పోర్ట్ అందుబాటులో ఉంది" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "టార్ ద్వారా {kind} లో {url} ను ఆక్సెస్ చెయ్యండి" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "టోర్ వాడుకను నిర్ధారించండి{url} టీ సి పి పై{kind}" @@ -7232,17 +7131,13 @@ msgstr "సాక్స్‌లు" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "టిసిపి పోర్ట్ 9050 పై ఒక టార్ సొక్స్ పోర్ట్ మీ %(box_name)sలో అందుబాటులో ఉంది." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "మారకుండా అమర్చుతోంది" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 #, fuzzy #| msgid "Deluge is a BitTorrent client that features a Web UI." msgid "Transmission is a BitTorrent client with a web interface." msgstr "డీలడ్జ్ అనేది జాల UI కలిగివున్న ఒక బిట్ టోరెంట్ కక్షిదారు." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7254,23 +7149,23 @@ msgstr "" "బిట్ టోర్రెంట్ పీర్-టు-పీర్ ఫైల్ షేరింగ్ ప్రోటోకాల్. ట్రాన్స్మిషన్ డెమోన్ బిట్ టోర్రెంట్ ఫైల్ భాగస్వామ్యాన్ని నిర్వహిస్తుంది. " "బిట్ టోర్రెంట్ అజ్ఞాత కాదని గమనించండి." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "ట్రాన్స్మిషన్" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -7287,21 +7182,21 @@ msgstr "" "ద్వారా పొందవచ్చు {box_name}.\n" "అంగీకార సమాచారం మరియు సిస్టమ్ మార్చడం సామర్ధ్యాలు నిర్వాహక సమూహం చెందిన వినియోగదారులకు పరిమితం." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "న్యూస్ ఫీడ్‌లను చదవడం మరియు చందాదారునిగా చేరు" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "టైనీ టైనీ RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "న్యూస్ ఫీడ్ రీడర్" @@ -7311,12 +7206,12 @@ msgstr "న్యూస్ ఫీడ్ రీడర్" msgid "Tiny Tiny RSS (Fork)" msgstr "టైనీ టైనీ RSS" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7324,36 +7219,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "నవీకరణ" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update" msgid "Updates" msgstr "నవీకరణ యూ.ఆర్.ఎల్" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" msgstr "ఫ్రీడమ్ బాక్స్ నిర్దేశిక" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "స్వయంచాలక నవీకరణలు నిలిపివేయబడ్డాయి" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7537,14 +7439,14 @@ msgstr "నవీకరణ ప్రారంభం విఫలమైంద msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7552,15 +7454,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "వినియోగదారులు మరియు సమూహాలు" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "అన్ని సేవలకు మరియు సిస్టమ్ అమరికలకు ప్రాప్యత" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ" @@ -7807,19 +7709,19 @@ msgstr "పాస్‌వర్డ్ మార్చు" msgid "Password changed successfully." msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 #, fuzzy msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "వైర్‌గార్డ్ వేగవంతమైన, ఆధునిక, సురక్షితమైన VPN సొరంగం." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8163,7 +8065,7 @@ msgstr "అనుసంధానం తొలగించు" msgid "Server deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8172,7 +8074,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8181,28 +8083,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "చిరునామా" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8220,7 +8122,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8233,7 +8135,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8241,11 +8143,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8281,23 +8183,23 @@ msgstr "పిపిపిఒఇ" msgid "Generic" msgstr "సాధారణమైన" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "సంస్థాపన ఒక పొరపాటు జరిగింది" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "వ్యవస్థాపిస్తోంది" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "దిగుమతి అవుతోంది" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "ప్రసార మాధ్యమం మార్పు" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "ఆకృతీకరణ ఫైలు: {file}" @@ -8363,6 +8265,10 @@ msgstr "" msgid " Home" msgstr "ముంగిలి" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "ముంగిలి" + #: plinth/templates/base.html:115 #, fuzzy #| msgid "Apps" @@ -8667,6 +8573,75 @@ msgstr "%(percentage)s %% పూర్తి" msgid "Gujarati" msgstr "గుజరాతీ" +#, fuzzy +#~| msgid "Directory does not exist." +#~ msgid "User does not exist" +#~ msgstr "డైరెక్టరీ ఉనికిలో లేదు." + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "నిలిపివేయబడింది" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "కేబుల్ అనుసంధానించబడిన" + +#, fuzzy +#~| msgid "Delete all the snapshots" +#~ msgid "Delete selected" +#~ msgstr "అన్ని స్నాప్షాట్‌లను తొలగించు" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "New value" +#~ msgstr "బ్యాకప్స్" + +#, fuzzy +#~| msgid "Download directory" +#~ msgid "You do not have a home directory." +#~ msgstr "డైరెక్టరీని దిగుమతి చేయు" + +#, fuzzy +#~| msgid "Updated media directory" +#~ msgid "Create home directory" +#~ msgstr "మీడియా డైరెక్టరీని నవీకరించబడింది" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "ప్రస్తుత స్థితి:" + +#, fuzzy +#~| msgid "Let's Encrypt" +#~ msgid "Use Let's Encrypt" +#~ msgstr "లెట్స్ ఎన్క్రిప్ట్" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "అధికారక్షేత్రం పేరు అమర్పు" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "యోగ్యతాపత్రం స్థితి" + +#, fuzzy +#~| msgid "Create User" +#~ msgid "Private key path" +#~ msgstr "వినియోగదారుని సృష్టించు" + +#, fuzzy +#~ msgid "Enabled aliases" +#~ msgstr "PageKite ప్రారంభించు" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "నిలిపివేయబడింది" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "సిస్టమ్‌లోని ఏకైక నిర్వాహకుడిని తొలగించలేరు." diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index c740f6477..4860c721d 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-10-27 04:42+0000\n" "Last-Translator: Burak Yavuz \n" "Language-Team: Turkish calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1036,15 +1037,15 @@ msgstr "" "erişebilecektir. Erişimi olan tüm kullanıcılar tüm kütüphaneleri " "kullanabilir." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "calibre e-kitap kütüphanesini kullan" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "E-kitap Kütüphanesi" @@ -1118,7 +1119,7 @@ msgstr "{name} silindi." msgid "Could not delete {name}: {error}" msgstr "{name} silinemedi: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1131,7 +1132,7 @@ msgstr "" "gerekli olmayan birçok gelişmiş işlev için denetimler mevcuttur. Konsol " "işlemleri için web tabanlı bir terminal de mevcuttur." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1143,7 +1144,7 @@ msgstr "" "noktalarını açmak ve birleştirme, köprüleme ve VLAN yönetimi gibi gelişmiş " "ağlar oluşturmak için de kullanılabilir." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1152,7 +1153,7 @@ msgstr "" "Admin grubuna ait {box_name} üzerindeki herhangi bir " "kullanıcı tarafından erişilebilir." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1160,12 +1161,12 @@ msgstr "" "Cockpit, ona bir etki alan adı aracılığıyla erişmenizi gerektirir. URL'nin " "bir parçası olarak bir IP adresi kullanılarak erişildiğinde çalışmayacaktır." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Sunucu Yönetimi" @@ -1330,7 +1331,7 @@ msgstr "Gelişmiş uygulamalar ve özellikler gösteriliyor" msgid "Hiding advanced apps and features" msgstr "Gelişmiş uygulamalar ve özellikler gizleniyor" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1342,7 +1343,7 @@ msgstr "" "SIP ve diğer iletişim sunucuları, başka şekilde birbirleriyle bağlantı " "kuramayan taraflar arasında bir çağrı kurmak için bunu kullanabilir." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse veya ejabberd gibi " "sunucuların burada sağlanan ayrıntılarla yapılandırılması gerekir." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "VoIP Yardımcısı" @@ -1387,7 +1388,7 @@ msgstr "İletişim sunucunuzu yapılandırmak için aşağıdaki URL'leri kullan msgid "Use the following shared authentication secret:" msgstr "Aşağıdaki paylaşılan kimlik doğrulama gizli anahtarını kullanın:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1395,11 +1396,11 @@ msgstr "" "Ağ zaman sunucusu, sistem saatini İnternet'teki sunucularla eşit halde tutan " "bir programdır." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Tarih ve Saat" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "NTP sunucusu ile zaman eşitlendi" @@ -1428,11 +1429,11 @@ msgstr "Saat dilimi ayarlanırken hata oldu: {exception}" msgid "Time zone set" msgstr "Saat dilimi ayarlandı" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge, bir Web kullanıcı arayüzüne sahip bir BitTorrent istemcisidir." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1440,17 +1441,17 @@ msgstr "" "Varsayılan parola 'deluge'dir, ancak bu hizmeti etkinleştirdikten hemen " "sonra oturum açmalı ve parolayı değiştirmelisiniz." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "BitTorrent uygulamalarını kullanarak dosyaları indir" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "BitTorrent Web İstemcisi" @@ -1476,18 +1477,18 @@ msgid "Diagnostics" msgstr "Tanılama" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "geçti" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "başarısız" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "hata" @@ -1578,7 +1579,7 @@ msgstr "Sonuç" msgid "Diagnostic Test" msgstr "Tanı Denemesi" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1586,12 +1587,12 @@ msgstr "" "diaspora* kendi verilerinizi depolayabileceğiniz ve denetleyebileceğiniz " "merkezi olmayan bir sosyal ağdır." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Federal Sosyal Ağ" @@ -1652,7 +1653,7 @@ msgstr "Kullanıcı kayıtları etkinleştirildi" msgid "User registrations disabled" msgstr "Kullanıcı kayıtları etkisizleştirildi" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1664,7 +1665,7 @@ msgstr "" "başkalarının bu {box_name} tarafından sağlanan hizmetleri bulmasını " "engelleyecektir." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1681,11 +1682,11 @@ msgstr "" "sunucu DNS adınızı yeni IP'ye atayacaktır ve İnternet'ten birisi sizin DNS " "adınızı sorarsa, şu anki IP adresinizle bir yanıt alacaktır." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Değişken DNS İstemcisi" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Değişken Etki Alanı Adı" @@ -1922,7 +1923,7 @@ msgstr "Değişken DNS'i Yapılandır" msgid "Dynamic DNS Status" msgstr "Değişken DNS Durumu" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1930,7 +1931,7 @@ msgstr "" "XMPP, açık ve standartlaştırılmış bir iletişim protokolüdür. Burada ejabberd " "adı verilen XMPP sunucunuzu çalıştırabilir ve yapılandırabilirsiniz." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web client{box_name} oturum " "açma adı ile herhangi bir kullanıcı tarafından erişilebilir." -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn uygulamasını yükleyin veya harici " "bir sunucu yapılandırın." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Sohbet Sunucusu" @@ -2096,48 +2097,18 @@ msgstr "E-posta Sunucusu" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Postfix, Dovecot ve Rspamd tarafından desteklenmektedir" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "Kod adı alındı" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "En az 2 karakter uzunluğunda olmak zorundadır" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "Geçersiz karakterler içeriyor" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "A-z veya 0-9 ile başlamalı ve bitmelidir" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "Sayı olamaz" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "Postfix etki alanı adı yapılandırması" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "Kullanıcı mevcut değil" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "Postfix-Dovecot SASL bütünleştirmesi" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "Postfix kod adı eşlemeleri" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "Postfix yerel alıcı eşlemeleri" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "RoundCube kullanılabilirliği" @@ -2162,16 +2133,61 @@ msgstr "Postfix bir TLS sertifikası kullanır" msgid "Has a TLS certificate" msgstr "TLS sertifikası var" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Geçerli bir kullanıcı adı girin." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Geçerli bir kullanıcı adı girin." + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "etki alanı" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "Yeni kod adı (@domain olmadan)" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "Geçersiz karakterler içeriyor" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "A-z veya 0-9 ile başlamalı ve bitmelidir" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "Sayı olamaz" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "My Aliases" +msgid "Aliases" +msgstr "Kod Adlarım" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Etkinleştirildi" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Etkisizleştirildi" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2188,159 +2204,77 @@ msgstr "K-9 Mail" msgid "FairEmail" msgstr "FairEmail" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "Kod Adlarını Yönet" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "E-posta kod adlarınız yok." -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" -msgstr "Seçileni etkisizleştir" +#: plinth/modules/email_server/templates/email_alias.html:24 +#, fuzzy +#| msgid "Disabled" +msgid "Disable" +msgstr "Etkisizleştirildi" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "Seçileni etkinleştir" +#, fuzzy +#| msgid "Enabled" +msgid "Enable" +msgstr "Etkinleştirildi" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "Seçileni sil" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "Yeni bir e-posta kod adı oluşturun" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Ekle" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "Yeni değer" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Güncelle" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "İsteğiniz ile ilgili bir sorun oldu. Lütfen tekrar deneyin." - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "Postfix TLS" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "Dovecot TLS" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "Rspamd yönetim arayüzünü ziyaret edin" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "Hizmet Uyarısı" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "Onar" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "Giriş dizininiz yok." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "E-posta almaya başlamak için bir tane oluşturun." - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "Giriş dizini oluştur" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "Giriş dizininiz e-postaları almaya hazır." - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "Şu anki ayarları koru" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "Let's Encrypt'ı kullan" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "Ortak ad" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "Özel değerler kullan" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "Sertifika yolu" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "Özel anahtar yolu" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "Sistem varsayılanını kullan" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Giriş" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "Postam" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "Kod Adlarım" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Güvenlik" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "Etki Alanları" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Anlık Görüntüleri Yönet" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "Hizmet Uyarısı" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "Onar" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "{0} içinde dahili hata" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "Daha fazla bilgi için syslog'u gözden geçirin" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" -msgstr "Etkinleştirilmiş kod adları" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Yapılandırma sırasında bir hata meydana geldi." -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "Etkisizleştirilmiş kod adları" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Ayar değişmedi" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2352,7 +2286,7 @@ msgstr "" "ve uygun şekilde yapılandırılmış halde tutulması, İnternet kaynaklı güvenlik " "tehdidi riskini azaltır." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Güvenlik Duvarı" @@ -2389,19 +2323,6 @@ msgstr "" msgid "Service/Port" msgstr "Hizmet/Bağlantı Noktası" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Etkinleştirildi" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Etkisizleştirildi" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "İzin Verildi" @@ -2488,7 +2409,7 @@ msgstr "Kurulumu Başlat" msgid "Setup Complete" msgstr "Kurulum Tamamlandı" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2506,7 +2427,7 @@ msgstr "" "depoları çoğaltabilir ve kod değişikliklerini yükleyebilirsiniz. Ve kodunuzu " "dünyanın her yerinden insanlarla paylaşabilirsiniz." -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2514,15 +2435,15 @@ msgstr "" "Git'in nasıl kullanılacağı hakkında daha fazla bilgi edinmek için Git öğreticisini ziyaret edin." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Git depolarına okuma-yazma erişimi" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Basit Git Barındırma" @@ -2950,7 +2871,7 @@ msgstr "{box_name} Hakkında" msgid "{box_name} Manual" msgstr "{box_name} Kılavuzu" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2962,7 +2883,7 @@ msgstr "" "olarak işletilen bir ağ aracılığıyla şifreli trafik göndererek isim " "gizliliği sağlar." -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -2970,26 +2891,26 @@ msgstr "" "I2P hakkında daha fazla bilgiyi proje ana sayfasında bulabilirsiniz." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" "Sağlanan web arayüzüne ilk ziyaret, yapılandırma işlemini başlatacaktır." -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "I2P uygulamasını yönet" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "İsim Gizliliği Ağı" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "I2P Vekil Sunucusu" @@ -3035,7 +2956,7 @@ msgstr "" "uygulama sağlar. Dosyaları torrent'leri ekleyerek indirin veya bir dosyayı " "paylaşmak için yeni bir torrent oluşturun." -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -3045,7 +2966,7 @@ msgstr "" "birkaç hafif biçimlendirme dilini, yorumlar ve RSS beslemeleri gibi ortak " "blog oluşturma işlevselliğini destekler." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3059,15 +2980,15 @@ msgstr "" "href=\"{users_url}\">Kullanıcı Yapılandırmasında bu izinleri " "değiştirebilir veya yeni kullanıcılar ekleyebilirsiniz." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Viki ve Blog" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Viki uygulamalarını görüntüle ve düzenle" @@ -3146,13 +3067,13 @@ msgstr "{title} silindi." msgid "Could not delete {title}: {error}" msgstr "{title} silinemedi: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted, işbirliğine dayalı bir metin düzenleyici olan Gobby için bir " "sunucudur." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3163,11 +3084,11 @@ msgstr "" "istemcisini indirin ve yükleyin. Ardından Gobby'yi başlatın, \"Sunucuya " "Bağlan\" seçeneğini seçin ve {box_name} cihazınızın etki alanı adını girin." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Gobby Sunucusu" @@ -3188,7 +3109,7 @@ msgstr "" "Gobby'yi başlatın, \"Sunucuya Bağlan\" seçeneğini seçin ve {box_name} " "cihazınızın etki alanı adını girin." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3196,11 +3117,11 @@ msgstr "" "JSXC, XMPP için bir web istemcisidir. Genellikle, yerel olarak çalışan bir " "XMPP sunucusuyla kullanılır." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Sohbet İstemcisi" @@ -3209,7 +3130,7 @@ msgstr "Sohbet İstemcisi" msgid "JavaScript license information" msgstr "JavaScript lisans bilgileri" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3225,7 +3146,7 @@ msgstr "" "(CA) olan Let's Encrypt'a bir etki alanının sahibi olduğunu kanıtlayarak " "yapar." -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3237,15 +3158,15 @@ msgstr "" "Lütfen bu hizmeti kullanmadan önce Let's Encrypt Abone Sözleşmesini okuyun ve kabul edin." -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Sertifikalar" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "Denenemiyor: Hiçbir etki alanı yapılandırılmamış." @@ -3350,7 +3271,7 @@ msgstr "{domain} etki alanı için sertifika başarılı olarak silindi" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} etki alanı için sertifika silme başarısız oldu: {error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3367,7 +3288,7 @@ msgstr "" "kullanıcılar, federasyon aracılığıyla diğer tüm Matrix sunucularındaki " "kullanıcılarla sohbet edebilir." -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " @@ -3377,7 +3298,7 @@ msgstr "" "ihtiyaç duyar. Coturn uygulamasını yükleyin veya " "harici bir sunucu yapılandırın." -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -3474,7 +3395,7 @@ msgstr "" "sertifikası gerekir. Bir tane edinmek için lütfen Let's Encrypt'a gidin." -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3487,7 +3408,7 @@ msgstr "" "barındırmak, notlar almak veya projelerde arkadaşlarınızla işbirliği yapmak " "için kullanabilirsiniz." -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3502,7 +3423,7 @@ msgstr "" "giderek MediaWiki'nin kendisinden daha fazla kullanıcı hesabı " "oluşturabilirsiniz." -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3510,12 +3431,12 @@ msgstr "" "Bu viki'ye bağlantısı olan herkes bunu okuyabilir. Sadece oturum açmış " "kullanıcılar içerikte değişiklik yapabilir." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Viki" @@ -3608,7 +3529,7 @@ msgstr "Varsayılan kaplama değiştirildi" msgid "Server URL updated" msgstr "Sunucu URL'si güncellendi" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3621,11 +3542,11 @@ msgstr "" "(30000) çalıştırılmasını sağlar. Sunucuya bağlanmak için bir Minetest istemcisi gereklidir." -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Blok Kum Havuzu" @@ -3698,7 +3619,7 @@ msgstr "PVP yapılandırması güncellendi" msgid "Damage configuration updated" msgstr "Hasar yapılandırması güncellendi" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3716,15 +3637,15 @@ msgstr "" "Xbox 360 gibi) gibi ya da totem ve Kodi gibi uygulamalar da dahil olmak " "üzere DLNA Sertifikası geçen tüm cihazlarla uyumludur." -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Ortam akış sunucusu" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Basit Ortam Sunucusu" @@ -3769,7 +3690,7 @@ msgstr "Belirtilen dizin mevcut değil." msgid "Updated media directory" msgstr "Güncellenmiş ortam dizini" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " @@ -3780,7 +3701,7 @@ msgstr "" "DirectConnect dahil olmak üzere birden fazla kişiden-kişiye ağlarına " "katılabilir." -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " @@ -3791,7 +3712,7 @@ msgstr "" "ön uçlarından herhangi biri veya bir telnet arayüzü aracılığıyla da " "denetleyebilir. Kılavuza bakın." -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -3799,16 +3720,16 @@ msgstr "" "{box_name} üzerinde, indirilen dosyalar /var/lib/mldonkey/ dizininde " "bulunabilir." -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "eDonkey uygulamalarını kullanarak dosyaları indir" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Kişiden-kişiye Dosya Paylaşımı" @@ -3820,7 +3741,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3841,7 +3762,7 @@ msgstr "" "monkeysphere.info/getting-started-ssh/\">Monkeysphere SSH belgelerine " "bakın." -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3859,7 +3780,7 @@ msgstr "" "web.monkeysphere.info/download/\">Monkeysphere web sitesinde bulunan " "bazı yazılımları yüklemesi gerekecektir." -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3983,7 +3904,7 @@ msgstr "Anahtar, anahtar sunucusuna yayınlandı." msgid "Error occurred while publishing key." msgstr "Anahtar yayınlanırken bir hata meydana geldi." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3991,7 +3912,7 @@ msgstr "" "Mumble, açık kaynaklı, düşük gecikmeli, şifreli, yüksek kaliteli bir sesli " "sohbet yazılımıdır." -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -4001,11 +3922,11 @@ msgstr "" "bağlanabilirsiniz. Masaüstünüzden ve Android cihazlarınızdan Mumble'a " "bağlanmak için istemciler mevcuttur." -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Sesli Sohbet" @@ -4063,7 +3984,7 @@ msgstr "Tüm web uygulamaları" msgid "Services" msgstr "Hizmetler" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -4071,7 +3992,7 @@ msgstr "" "Ağ cihazlarını yapılandırın. İnternet'e Ethernet, Wi-Fi veya PPPoE ile " "bağlanın. Bu bağlantıyı ağdaki diğer cihazlarla paylaşın." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -4079,11 +4000,11 @@ msgstr "" "Diğer yöntemler aracılığıyla yönetilen cihazlar burada yapılandırma için " "mevcut olmayabilir." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Ağlar" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "IPv{kind} üzerinde DNSSEC kullanma" @@ -4651,6 +4572,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Bu bağlantı etkin değil." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Güvenlik" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5133,7 +5059,7 @@ msgstr "genel" msgid "TUN or TAP interface" msgstr "TUN veya TAP arayüzü" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -5223,7 +5149,7 @@ msgstr "{name} bağlantısı silindi." msgid "Failed to delete connection: Connection not found." msgstr "Bağlantının silinmesi başarısız oldu: Bağlantı bulunamadı." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5240,20 +5166,20 @@ msgstr "" "isim gizliliği sayesinde {box_name} aracılığıyla İnternet'e de " "erişebilirsiniz." -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "VPN hizmetlerine bağlan" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Sanal Özel Ağ" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5331,7 +5257,7 @@ msgstr "Profil, %(box_name)s cihazının her kullanıcısına özgüdür. Gizli msgid "Download my profile" msgstr "Profilimi indir" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5344,17 +5270,17 @@ msgstr "" "{box_name} hizmetlerinize İnternet'ten erişilemiyorsa ihtiyacınız vardır. " "Bu, aşağıdaki durumları içerir:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} kısıtlanmış bir güvenlik duvarının arkasında." -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{box_name} denetleyemediğiniz bir (kablosuz) yönlendiriciye bağlı." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5362,7 +5288,7 @@ msgstr "" "İSS'niz size bir dış IP adresi sağlamıyor ve bunun yerine NAT aracılığıyla " "İnternet bağlantısı sağlıyor." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5370,11 +5296,11 @@ msgstr "" "İSS'niz size bir sabit IP adresi sağlamıyor ve IP adresiniz İnternet'e her " "bağlandığınızda değişiyor." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "İSS'niz gelen bağlantıları sınırlıyor." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5388,15 +5314,15 @@ msgstr "" "href=\"https://pagekite.net\">pagekite.net. Gelecekte bunun için " "arkadaşınızın {box_name} cihazını kullanmak mümkün olabilir." -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Herkese Açık Görünürlük" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "PageKite Etki Alanı" @@ -5543,12 +5469,12 @@ msgstr "" "SSH istemci ayarlaması talimatlarına bakın" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Performans" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " @@ -5559,7 +5485,7 @@ msgstr "" "donanımın kullanıcılar ve hizmetler tarafından aşırı yüklenip yüklenmediği " "hakkında temel içgörüler verebilir." -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." @@ -5567,7 +5493,7 @@ msgstr "" "Performans ölçümleri, Performance Co-Pilot tarafından toplanır ve Cockpit " "uygulaması kullanılarak görüntülenebilir." -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Sistem İzleme" @@ -5638,7 +5564,7 @@ msgstr "" msgid "Shut Down Now" msgstr "Şimdi Kapat" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5649,7 +5575,7 @@ msgstr "" "çöplerini kaldırmak için gelişmiş süzme yeteneklerine sahip, önbelleğe " "alınmayan bir web vekil sunucusudur. " -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5664,20 +5590,20 @@ msgstr "" "belgelerini https://www.privoxy.org " "adresinde görebilirsiniz." -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Web Vekil Sunucusu" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tcp{kind} üzerinde {proxy} vekil sunucusu ile {url} adresine erişin" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5694,7 +5620,7 @@ msgstr "" "çalıştırabilir ve bir masaüstünden veya cep telefonundan bir veya daha fazla " "Quassel istemcisini bağlamak ve bağlantısını kesmek için kullanılabilir." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your masaüstü ve mobil cihazlarınızdan bağlanacak istemciler mevcuttur." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "IRC İstemcisi" @@ -5718,7 +5644,7 @@ msgstr "IRC İstemcisi" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5733,7 +5659,7 @@ msgstr "" "\">desteklenen bir istemci uygulaması gereklidir. Radicale'ye {box_name} " "oturum açma adı ile herhangi bir kullanıcı tarafından erişilebilir." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -5743,12 +5669,12 @@ msgstr "" "temel bir web arayüzü sağlar. Ayrı bir istemci kullanılarak yapılması " "zorunlu olan olayların veya kişilerin eklenmesini desteklemez." -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Takvim ve Adres Defteri" @@ -5831,7 +5757,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Erişim izinleri yapılandırması güncellendi" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5843,7 +5769,7 @@ msgstr "" "defteri, klasör işleme, ileti arama ve yazım denetimi dahil olmak üzere bir " "e-posta istemcisinden beklediğiniz tam işlevselliği sağlar." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5857,7 +5783,7 @@ msgstr "" "IMAP için (önerilir), sunucu alanını imaps://imap.ornek.com " "gibi doldurun." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5872,11 +5798,11 @@ msgstr "" "gerekeceğini unutmayın (https://myaccount.google.com/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "E-posta İstemcisi" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -5884,7 +5810,7 @@ msgstr "" "Samba, FreedomBox ile yerel ağınızdaki diğer bilgisayarlar arasında dosya ve " "klasör paylaşmayı sağlar." -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5898,11 +5824,11 @@ msgstr "" "(Linux ve Mac'te) konumunda erişilebilir. Aralarından seçim yapabileceğiniz " "üç tür paylaşım vardır: " -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "Açık paylaşım - yerel ağınızdaki herkes tarafından erişilebilir." -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." @@ -5910,7 +5836,7 @@ msgstr "" "Grup paylaşımı - sadece Freedombox paylaşım grubundaki FreedomBox " "kullanıcıları tarafından erişilebilir." -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." @@ -5918,15 +5844,15 @@ msgstr "" "Ev paylaşımı - Freedombox paylaşım grubundaki her kullanıcı kendi özel " "alanına sahip olabilir." -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Özel paylaşımlara erişim" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Ağ Dosya Depolama" @@ -6043,7 +5969,7 @@ msgstr "Paylaşım etkisizleştirildi." msgid "Error disabling share: {error_message}" msgstr "Paylaşımı etkisizleştirirken hata oldu: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -6051,7 +5977,7 @@ msgstr "" "Searx, gizliliğe saygılı bir İnternet üstbilgi arama motorudur. Birden çok " "arama motorundan gelen sonuçları toplar ve görüntüler." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -6059,15 +5985,15 @@ msgstr "" "Searx, arama motorları tarafından izlenmeyi ve profil oluşturmayı önlemek " "için kullanılabilir. Varsayılan olarak hiçbir tanımlama bilgisi saklamaz." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Web'de ara" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Web Arama" @@ -6249,11 +6175,11 @@ msgstr "Kısıtlı erişim ayarlanırken hata oldu: {exception}" msgid "Updated security configuration" msgstr "Güvenlik yapılandırması güncellendi" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli, yer işaretlerini kaydetmenizi ve paylaşmanızı sağlar." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6261,15 +6187,15 @@ msgstr "" "Shaarli'nin sadece ilk ziyaretinizde ayarlamanız gerekecek tek bir kullanıcı " "hesabını desteklediğini unutmayın." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Yer İşaretleri" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -6279,7 +6205,7 @@ msgstr "" "bir SOCKS5 vekil sunucusudur. İnternet süzmeyi ve sansürü atlamak için " "kullanılabilir." -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6292,7 +6218,7 @@ msgstr "" "Yerel cihazlar bu vekil sunucuya bağlanabilir ve verileri şifrelenecek ve " "Shadowsocks sunucusu aracılığıyla vekil sunucuya tabi tutulacaktır." -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -6301,11 +6227,11 @@ msgstr "" "uygulamanızda SOCKS5 vekil sunucu URL'sini http://freedombox_adresi:1080/ " "olarak ayarlayın" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "Socks5 Vekil Sunucusu" @@ -6442,7 +6368,7 @@ msgstr "Paylaşımı Düzenle" msgid "Share deleted." msgstr "Paylaşım silindi." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -6453,7 +6379,7 @@ msgstr "" "durumunda sistemi önceden bilinen iyi bir duruma geri döndürmek için " "kullanılabilir." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6465,7 +6391,7 @@ msgstr "" "eski anlık görüntüler, aşağıdaki ayarlara göre otomatik olarak " "temizlenecektir." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for yedeklemelerin " "yerine geçmez. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Depolama Anlık Görüntüleri" @@ -6682,7 +6608,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "Anlık Görüntüye Geri Al" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6694,7 +6620,7 @@ msgstr "" "bağlantıları kullanarak yönetim görevlerini gerçekleştirebilir, dosyaları " "kopyalayabilir veya diğer hizmetleri çalıştırabilir." -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Güvenli Kabuk (SSH) Sunucusu" @@ -6740,7 +6666,7 @@ msgstr "Parola ile SSH kimlik doğrulaması etkisizleştirildi." msgid "SSH authentication with password enabled." msgstr "Parola ile SSH kimlik doğrulaması etkinleştirildi." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "Tek Oturum Açma" @@ -6748,7 +6674,7 @@ msgstr "Tek Oturum Açma" msgid "Login" msgstr "Oturum aç" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6760,105 +6686,105 @@ msgstr "" "ortamı bağlayabilir ve bağlantısını kaldırabilir, kök bölümünü vb. " "genişletebilirsiniz." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Depolama" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bayt" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "İşlem başarısız oldu." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "İşlem iptal edildi." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Aygıtın zaten bağlantısı kaldırılıyor." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "Eksik sürücü/araç desteğinden dolayı işlem desteklenmiyor." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "İşlem zaman aşımına uğradı." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "İşlem, derin uyku durumunda olan bir diski uyandırır." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Meşgul olan bir aygıtın bağlantısı kaldırılmaya çalışılıyor." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "İşlem zaten iptal edildi." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "İstenen işlemi gerçekleştirmek için yetkili değilsiniz." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Aygıt zaten bağlı." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Aygıt bağlı değil." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "İstenen seçeneği kullanmak için izin verilmedi." -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Aygıt başka bir kullanıcı tarafından bağlandı." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Sistem bölümünde düşük alan: %{percent_used} kullanıldı, {free_space} boş." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Düşük disk alanı" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "Disk arızası yakın" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6982,7 +6908,7 @@ msgstr "Aygıt güvenli bir şekilde çıkarılabilir." msgid "Error ejecting device: {error_message}" msgstr "Aygıt çıkarılırken hata oldu: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6994,7 +6920,7 @@ msgstr "" "dosyaların oluşturulması, değiştirilmesi veya silinmesi, Syncthing'i de " "çalıştıran diğer tüm cihazlarda otomatik olarak tekrarlanacaktır." -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -7013,20 +6939,20 @@ msgstr "" "{box_name} cihazındaki web arayüzü sadece \"admin\" veya \"syncthing-access" "\" grubuna ait kullanıcılar tarafından kullanılabilir." -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Syncthing uygulamasını yönet" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Dosya Eşitleme" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -7038,7 +6964,7 @@ msgstr "" "sağlayıcıdan bağımsız güvenlik kullanır. Bazı düğümler başarısız olsa bile, " "dosyalarınız kalan düğümlerden alınabilir." -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -7049,11 +6975,11 @@ msgstr "" "barındırır. Bu düğümü diğer depolama düğümlerine tanıtacak ek tanıtıcılar " "eklenebilir." -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Dağıtılmış Dosya Depolaması" @@ -7093,7 +7019,7 @@ msgstr "Bağlı tanıtıcılar" msgid "Remove" msgstr "Kaldır" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7106,40 +7032,40 @@ msgstr "" "gezinirken en iyi koruma için Tor Projesi, Tor Tarayıcı kullanmanızı önerir." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "Tor Onion Hizmeti" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "Tor Socks Vekil Sunucusu" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Tor Köprüsü Aktarımı" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Tor aktarımı bağlantı noktası kullanılabilir" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "Obfs3 taşıma kayıtlı" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "Obfs4 taşıma kayıtlı" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tor aracılığıyla tcp{kind} üzerinde erişim URL'si {url}" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Tcp{kind} üzerinde {url} adresinde Tor kullanımını onaylama" @@ -7292,15 +7218,11 @@ msgstr "" "9050 nolu TCP bağlantı noktası üzerindeki %(box_name)s cihazınızda bir Tor " "SOCKS bağlantı noktası kullanılabilir." -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Ayar değişmedi" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission, Web kullanıcı arayüzü olan bir BitTorrent istemcisidir." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -7308,18 +7230,18 @@ msgstr "" "BitTorrent, kişiden-kişiye bir dosya paylaşım protokolüdür. BitTorrent'in " "isimsiz olmadığını unutmayın." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" "Lütfen aktarım arka plan programının varsayılan bağlantı noktasını " "değiştirmeyin." -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7329,7 +7251,7 @@ msgstr "" "hissettiren herhangi bir konumdan haberleri okumayı sağlamak için " "tasarlanmış bir haber bildirim (RSS/Atom) okuyucusu ve toplayıcısıdır." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any {box_name} " "oturum açma adı olan herhangi bir kullanıcı tarafından erişilebilir." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -7346,15 +7268,15 @@ msgstr "" "Tiny Tiny RSS için bir mobil veya masaüstü uygulaması kullanırken, bağlanmak " "için /tt-rss-app URL'sini kullanın." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Haber bildirimlerini oku ve abone ol" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Haber Bildirim Okuyucusu" @@ -7362,12 +7284,12 @@ msgstr "Haber Bildirim Okuyucusu" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "En son yazılım ve güvenlik güncellemelerini denetleyin ve uygulayın." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7380,19 +7302,26 @@ msgstr "" "Eğer sistemin yeniden başlatılması gerekli görülürse, saat 02:00'da otomatik " "olarak yapılır ve tüm uygulamalar kısa bir süre için kullanılamaz hale gelir." -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Güncelle" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Güncellemeler" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox Güncellendi" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "Dağıtım güncellemesi başlatılamadı" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " @@ -7402,11 +7331,11 @@ msgstr "" "Lütfen en az 5 GB boş alan olduğundan emin olun. Dağıtım güncellemesi, " "etkinleştirildiyse 24 saat sonra yeniden denenecektir." -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "Dağıtım güncellemesi başlatıldı" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7601,7 +7530,7 @@ msgstr "Yükseltmeyi başlatma başarısız oldu." msgid "Frequent feature updates activated." msgstr "Sık yapılan özellik güncellemeleri etkinleştirildi." -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7612,7 +7541,7 @@ msgstr "" "kullanıcıya, uygulamaya erişme yetkisi vermek için bir kullanıcı hesabının " "bir grubun parçası olmasını gerektirir." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7624,15 +7553,15 @@ msgstr "" "sadece admin grubunun kullanıcıları uygulamaları veya sistem " "ayarlarını değiştirebilir." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Kullanıcılar ve Gruplar" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Tüm hizmetlere ve sistem ayarlarına erişim" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP \"{search_item}\" girişini denetleme" @@ -7879,11 +7808,11 @@ msgstr "Parolayı Değiştir" msgid "Password changed successfully." msgstr "Parola başarılı olarak değiştirildi." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard hızlı, modern ve güvenli bir VPN tünelidir." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7893,7 +7822,7 @@ msgstr "" "cihazından gelen tüm giden trafiği VPN aracılığıyla yönlendirmek için " "kullanılabilir." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8210,7 +8139,7 @@ msgstr "Sunucuya Bağlantıyı Sil" msgid "Server deleted." msgstr "Sunucu silindi." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8224,7 +8153,7 @@ msgstr "" "kullanılarak seçilebilir. Yönetim arayüzü ve üretilen web sayfaları mobil " "cihazlara uygundur." -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8238,7 +8167,7 @@ msgstr "" "Sayfalarınıza ve yazılarınıza daha iyi URL'ler sağlamak için yönetici " "arayüzünde kalıcı bağlantıları etkinleştirin." -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " @@ -8248,7 +8177,7 @@ msgstr "" "sırasında oluşturulur. Gelecekte yönetim arayüzüne erişmek için yönetici sayfası yerini işaretleyin." -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " @@ -8258,12 +8187,12 @@ msgstr "" "yükseltmesini el ile çalıştırmanız gerekir. Ek eklentiler veya temalar kendi " "sorumluluğunuzda yüklenebilir ve yükseltilebilir." -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "Web Sitesi ve Blog" @@ -8280,7 +8209,7 @@ msgstr "" "WordPress sitesini veya blogunu görüntülemesine izin verir. Sadece ilk " "WordPress kurulumunu gerçekleştirdikten sonra etkinleştirin." -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8302,7 +8231,7 @@ msgstr "" "çekilmiş fotoğrafları bulmak kolaydır. Tek tek fotoğraflar, doğrudan bir " "bağlantı gönderilerek başkalarıyla paylaşılabilir." -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8313,11 +8242,11 @@ msgstr "" "Ek kullanıcılar için hesaplar hem {box_name} cihazında hem de Zoph'da aynı " "kullanıcı adıyla oluşturulmak zorundadır." -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Fotoğraf Düzenleyici" @@ -8355,23 +8284,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Genel" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Kurulum sırasında hata oldu" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "yükleniyor" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "indiriliyor" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "ortam değiştirme" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "yapılandırma dosyası: {file}" @@ -8441,6 +8370,10 @@ msgstr "%(box_name)s için temel işlevsellik ve web arayüzü" msgid " Home" msgstr " Giriş" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Giriş" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Uygulamalar" @@ -8741,6 +8674,84 @@ msgstr "%%%(percentage)s tamamlandı" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "The alias was taken" +#~ msgstr "Kod adı alındı" + +#~ msgid "Must be at least 2 characters long" +#~ msgstr "En az 2 karakter uzunluğunda olmak zorundadır" + +#~ msgid "User does not exist" +#~ msgstr "Kullanıcı mevcut değil" + +#~ msgid "Postfix local recipient maps" +#~ msgstr "Postfix yerel alıcı eşlemeleri" + +#~ msgid "Disable selected" +#~ msgstr "Seçileni etkisizleştir" + +#~ msgid "Enable selected" +#~ msgstr "Seçileni etkinleştir" + +#~ msgid "Delete selected" +#~ msgstr "Seçileni sil" + +#~ msgid "New value" +#~ msgstr "Yeni değer" + +#~ msgid "There was a problem with your request. Please try again." +#~ msgstr "İsteğiniz ile ilgili bir sorun oldu. Lütfen tekrar deneyin." + +#~ msgid "Postfix TLS" +#~ msgstr "Postfix TLS" + +#~ msgid "Dovecot TLS" +#~ msgstr "Dovecot TLS" + +#~ msgid "Visit Rspamd administration interface" +#~ msgstr "Rspamd yönetim arayüzünü ziyaret edin" + +#~ msgid "You do not have a home directory." +#~ msgstr "Giriş dizininiz yok." + +#~ msgid "Create one to begin receiving emails." +#~ msgstr "E-posta almaya başlamak için bir tane oluşturun." + +#~ msgid "Create home directory" +#~ msgstr "Giriş dizini oluştur" + +#~ msgid "Your home directory is ready to receive emails." +#~ msgstr "Giriş dizininiz e-postaları almaya hazır." + +#~ msgid "Keep current settings" +#~ msgstr "Şu anki ayarları koru" + +#~ msgid "Use Let's Encrypt" +#~ msgstr "Let's Encrypt'ı kullan" + +#~ msgid "Common name" +#~ msgstr "Ortak ad" + +#~ msgid "Use custom values" +#~ msgstr "Özel değerler kullan" + +#~ msgid "Certificate path" +#~ msgstr "Sertifika yolu" + +#~ msgid "Private key path" +#~ msgstr "Özel anahtar yolu" + +#~ msgid "Use system default" +#~ msgstr "Sistem varsayılanını kullan" + +#~ msgid "My Mail" +#~ msgstr "Postam" + +#~ msgid "Enabled aliases" +#~ msgstr "Etkinleştirilmiş kod adları" + +#~ msgid "Disabled aliases" +#~ msgstr "Etkisizleştirilmiş kod adları" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Sistemdeki tek yönetici silinemez." diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 6547354a1..038deb16b 100644 --- a/plinth/locale/uk/LC_MESSAGES/django.po +++ b/plinth/locale/uk/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-10-27 17:08+0000\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1041,15 +1042,15 @@ msgstr "" "до застосунку. Усі користувачі з доступом можуть користуватися всіма " "бібліотеками." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Використання бібліотеки ел. книжок calibre" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "Бібліотека ел. книжок" @@ -1123,7 +1124,7 @@ msgstr "{name} видалено." msgid "Could not delete {name}: {error}" msgstr "Не вдалося видалити {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1136,7 +1137,7 @@ msgstr "" "розширених функцій, які зазвичай не потрібні. Також доступний вебтермінал " "для консольних операцій." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1148,7 +1149,7 @@ msgstr "" "відкривання власних портів фаєрволу та розширеної роботи з мережею, як-от " "роботи зі звʼязком, мостами та керуванням VLAN." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1157,7 +1158,7 @@ msgstr "" "До нього може мати доступ будь-який користувач " "на {box_name}, що належить до групи admin." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1165,12 +1166,12 @@ msgstr "" "Cockpit вимагає доступу до нього через доменне імʼя. Він не працюватиме, " "якщо звертатися до нього використовуючи IP-адресу як частину URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Адміністрування сервера" @@ -1329,7 +1330,7 @@ msgstr "Відображення розширених застосунків і msgid "Hiding advanced apps and features" msgstr "Приховування розширених застосунків і можливостей" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1341,7 +1342,7 @@ msgstr "" "комунікації можуть використовувати його для встановлення дзвінків між " "частинами, які по-іншому не можливо звʼязати між собою." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse або ejabberd потрібно налаштовувати з урахуванням деталей наведених тут." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "Помічник VoIP" @@ -1388,7 +1389,7 @@ msgstr "" msgid "Use the following shared authentication secret:" msgstr "Використовуйте наступний спільний секрет автентифікації:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1396,11 +1397,11 @@ msgstr "" "Сервер мережевого часу — це програма, що підтримує системний час " "синхронізовано зі серверами в Інтернеті." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Дата і час" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Час синхронізовано зі сервером NTP" @@ -1429,11 +1430,11 @@ msgstr "Помилка задавання часового поясу: {exceptio msgid "Time zone set" msgstr "Часовий пояс задано" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge – це клієнт BitTorrent із вебінтерфейсом." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1441,17 +1442,17 @@ msgstr "" "Типовий пароль – 'deluge', але Ви можете ввійти і змінити його відразу після " "ввімкнення цього сервісу." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Завантаження файлів через застосунки BitTorrent" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "Вебклієнт BitTorrent" @@ -1477,18 +1478,18 @@ msgid "Diagnostics" msgstr "Діагностика" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "пройдено" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "невдало" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "помилка" @@ -1579,7 +1580,7 @@ msgstr "Результат" msgid "Diagnostic Test" msgstr "Тест діагностики" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1587,12 +1588,12 @@ msgstr "" "diaspora* це децентралізована соціальна мережа, де Ви можете зберігати і " "контролювати свої дані." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Федеративна соціальна мережа" @@ -1647,7 +1648,7 @@ msgstr "Реєстрацію користувачів дозволено" msgid "User registrations disabled" msgstr "Реєстрацію користувачів вимкнено" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1658,7 +1659,7 @@ msgstr "" "кожних 24год.), то іншим може бути важко знайти Вас в Інтернеті. Це " "перешкоджатиме іншим пошук сервісів, що надаються цим {box_name}." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1669,11 +1670,11 @@ msgid "" "IP address." msgstr "" -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Клієнт динамічної DNS" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Динамічна доменна назва" @@ -1889,7 +1890,7 @@ msgstr "Налаштувати динамічну DNS" msgid "Dynamic DNS Status" msgstr "Стан динамічної DNS" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1897,7 +1898,7 @@ msgstr "" "XMPP – це відкритий і стандартизований протокол спілкування. Тут Ви можете " "запустити і налаштувати свій XMPP-сервер ejabberd." -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn або налаштуйте зовнішній " "сервер." -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "Сервер чату" @@ -2053,48 +2054,18 @@ msgstr "Сервер електронної пошти" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Працює на Postfix, Dovecot та Rspamd" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "Аліяс взято" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "Має складатися щонайменше з 2 символів" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "Містить неправильні символи" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "Має починатися і закінчуватися на a-z або 0-9" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "Не може бути числом" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "Налаштування доменної назви Postfix" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "Користувача не існує" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "Мапи аліясів Postfix" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "Мапи локальних отримувачів Postfix" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "Доступність RoundCube" @@ -2119,16 +2090,61 @@ msgstr "Postfix використовує сертифікат TLS" msgid "Has a TLS certificate" msgstr "Має сертифікат TLS" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid domain" +msgstr "Уведіть коректне імʼя користувача." + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Enter a valid username." +msgid "Enter a valid destination" +msgstr "Уведіть коректне імʼя користувача." + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "домен" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "Новий аліяс (без @domain)" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "Містить неправильні символи" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "Має починатися і закінчуватися на a-z або 0-9" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "Не може бути числом" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "My Aliases" +msgid "Aliases" +msgstr "Мої аліяси" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "Дозволено" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "Вимкнено" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2145,159 +2161,77 @@ msgstr "K-9 Mail" msgid "FairEmail" msgstr "FairEmail" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 msgid "Manage Aliases" msgstr "Керування аліясами" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "У Вас нема аліясів ел. пошти." -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" -msgstr "Вимкнути вибране" +#: plinth/modules/email_server/templates/email_alias.html:24 +#, fuzzy +#| msgid "Disabled" +msgid "Disable" +msgstr "Вимкнено" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "Дозволити вибране" +#, fuzzy +#| msgid "Enabled" +msgid "Enable" +msgstr "Дозволено" -#: plinth/modules/email_server/templates/email_alias.html:29 -msgid "Delete selected" -msgstr "Видалити вибране" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 msgid "Create a new email alias" msgstr "Створити новий аліяс електронної пошти" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "Додати" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "Нове значення" - -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Оновити" - -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "Були проблеми з Вашим запитом. Спробуйте ще раз." - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "TLS для Postfix" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "TLS для Dovecot" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "Відвідайте інтерфейс адміністрування Rspamd" - -#: plinth/modules/email_server/templates/email_server.html:18 -msgid "Service Alert" -msgstr "Сповіщення сервісу" - -#: plinth/modules/email_server/templates/email_server.html:38 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "У вас нема домашнього каталогу." - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "Створити одну, щоб отримувати ел. пошту." - -#: plinth/modules/email_server/templates/my_mail.html:22 -msgid "Create home directory" -msgstr "Створити домашній каталог" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "Ваш домашній каталог готовий до отримання ел. пошти." - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "Зберігати поточні налаштування" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "Використовувати Let's Encrypt" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "Звичайна назва" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "Використовувати власні значення" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "Шлях сертифікату" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "Шлях приватного ключа" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "Домівка" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "Моя пошта" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "Мої аліяси" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "Безпека" - -#: plinth/modules/email_server/views.py:26 +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 #: plinth/modules/monkeysphere/templates/monkeysphere.html:37 msgid "Domains" msgstr "Домени" -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Snapshots" +msgid "Manage Spam" +msgstr "Керування зрізами" + +#: plinth/modules/email_server/templates/email_server.html:30 +msgid "Service Alert" +msgstr "Сповіщення сервісу" + +#: plinth/modules/email_server/templates/email_server.html:50 +msgid "Repair" +msgstr "" + +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "Внутрішня помилка в {0}" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "Перевірте системний журнал, щоб дізнатися більше" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" -msgstr "Дозволені аліяси" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Під час налаштування відбулася помилка." -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "Вимкнені аліяси" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "Налаштування не змінено" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2308,7 +2242,7 @@ msgstr "" "трафік Вашого {box_name}. Тримайте фаєрвол увімкненим і належно " "налаштованим, це зменшить ризик загроз безпеці з Інтернету." -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "Фаєрвол" @@ -2340,19 +2274,6 @@ msgstr "" msgid "Service/Port" msgstr "Сервіс/Порт" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "Дозволено" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "Вимкнено" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "Дозволяється" @@ -2432,7 +2353,7 @@ msgstr "Розпочати встановлення" msgid "Setup Complete" msgstr "Налаштування завершено" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2443,7 +2364,7 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." @@ -2451,15 +2372,15 @@ msgstr "" "Щоб дізнатися більше як користуватися Git відвідайте навчання Git." -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "Доступ до читання-запису репозиторіїв Git" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "Gitweb" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "Просте розміщення Git" @@ -2847,7 +2768,7 @@ msgstr "Про {box_name}" msgid "{box_name} Manual" msgstr "Посібник для {box_name}" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2855,7 +2776,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." @@ -2863,25 +2784,25 @@ msgstr "" "Детальніше про I2P на їхній домашній сторінці проєкту." -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "Керування застосунком I2P" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "Мережа анонімності" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "Проксі I2P" @@ -2918,7 +2839,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2928,7 +2849,7 @@ msgstr "" "легких мов розмітки, включаючи Markdown, та основні функції для роботи з " "блоґами, як-от коментарі та стрічки RSS." -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2942,15 +2863,15 @@ msgstr "" "\"{users_url}\">налаштуваннях користувача Ви можете змінити ці права або " "додавати нових користувачів." -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Вікі та блоґ" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "Перегляд і редагування застосунків вікі" @@ -3027,11 +2948,11 @@ msgstr "{title} видалено." msgid "Could not delete {title}: {error}" msgstr "Не можливо видалити {title}: {error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted — це сервер для Gobby, колективного редактора тексту." -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3042,11 +2963,11 @@ msgstr "" "Gobby, стільничний клієнт і встановіть їх. Потім запустіть Gobby, " "виберіть «Зʼєднатися зі сервером» і введіть Вашу доменну назву {box_name}." -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "Сервер Gobby" @@ -3067,7 +2988,7 @@ msgstr "" "Запустіть Gobby, виберіть «Зʼєднатися зі сервером» і введіть Вашу доменну " "назву {box_name}." -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -3075,11 +2996,11 @@ msgstr "" "JSXC – це вебклієнт для XMPP. Як правило, використовується з запущеним " "локальним сервером XMPP." -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "Клієнт чату" @@ -3088,7 +3009,7 @@ msgstr "Клієнт чату" msgid "JavaScript license information" msgstr "Інформація про ліцензію JavaScript" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3098,7 +3019,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3106,15 +3027,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "Let's Encrypt" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "Сертифікати" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "Тестування не можливе: Нема налаштованих доменів." @@ -3217,7 +3138,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3227,14 +3148,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3305,7 +3226,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3313,7 +3234,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3322,7 +3243,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -3330,12 +3251,12 @@ msgstr "" "Будь-хто, хто має посилання на цю вікі може читати її. Лише користувачі, що " "ввійшли можуть робити зміни вмісту." -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "Вікі" @@ -3417,7 +3338,7 @@ msgstr "" msgid "Server URL updated" msgstr "URL сервера оновлено" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3426,11 +3347,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "Блокова пісочниця" @@ -3499,7 +3420,7 @@ msgstr "Конфіґурацію PVP оновлено" msgid "Damage configuration updated" msgstr "Конфіґурацію пошкоджень оновлено" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3510,15 +3431,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "Сервер потокового медія" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "MiniDLNA" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "Простий сервер медія" @@ -3558,36 +3479,36 @@ msgstr "Призначений каталог не існує." msgid "Updated media directory" msgstr "Оновлено каталог медія" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "Завантаження файлів через застосунок eDonkey" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "Обмін файлами peer-to-peer" @@ -3599,7 +3520,7 @@ msgstr "KMLDonkey" msgid "AMLDonkey" msgstr "AMLDonkey" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3611,7 +3532,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3622,7 +3543,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3744,24 +3665,24 @@ msgstr "Публікування ключа на сервер ключів." msgid "Error occurred while publishing key." msgstr "Помилка відбулася під час публікування ключа." -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "Голосовий чат" @@ -3812,7 +3733,7 @@ msgstr "Усі вебзастосунки" msgid "Services" msgstr "Сервіси" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." @@ -3820,7 +3741,7 @@ msgstr "" "Налаштування мережевих пристроїв. Зʼєднання з Інтернетом через Ethernet, Wi-" "Fi або PPPoE. Ділитися цим зʼєднанням з іншими пристроями в мережі." -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." @@ -3828,11 +3749,11 @@ msgstr "" "Пристрої, що адмініструються іншими способами, можуть бути недоступними для " "налаштування тут." -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "Мережі" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4334,6 +4255,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "Це зʼєднання неактивне." +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "Безпека" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4798,7 +4724,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "інтерфейс TUN або TAP" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -4888,7 +4814,7 @@ msgstr "Зʼєднання {name} видалено." msgid "Failed to delete connection: Connection not found." msgstr "Не вдалося видалити зʼєднання: Зʼєднання не знайдено." -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4899,20 +4825,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "Підʼєднання до сервісів VPN" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "Віртуальна приватна мережа" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4977,7 +4903,7 @@ msgstr "" msgid "Download my profile" msgstr "Завантажити мій профіль" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4986,19 +4912,19 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" "{box_name} підʼєднано до (бездротового) маршрутизатора, яким Ви не можете " "керувати." -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." @@ -5006,7 +4932,7 @@ msgstr "" "Ваш постачальник Інтернет-послуг не надає Вам зовнішньої IP-адреси, а надає " "Інтернет-зʼєднання через NAT." -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." @@ -5014,11 +4940,11 @@ msgstr "" "Ваш постачальник Інтернет-послуг не надає Вам статичної IP-адреси і Ваша IP-" "адреса змінюється кожного разу, коли Ви підʼєднуєтеся до Інтернету." -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "Ваш ISP обмежує вхідні зʼєднання." -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -5027,15 +4953,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "PageKite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "Публічна видимість" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "Домен PageKite" @@ -5171,25 +5097,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "Продуктивність" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "Моніторинг системи" @@ -5254,14 +5180,14 @@ msgstr "" msgid "Shut Down Now" msgstr "Вимкнути зараз" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5271,20 +5197,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "Веб-проксі" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5301,7 +5227,7 @@ msgstr "" "один чи більше клієнтів Quassel для приєднання чи відʼєднання з настільного " "ПК чи мобільного." -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your настільного ПК " "і мобільного." -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "Клієнт IRC" @@ -5324,7 +5250,7 @@ msgstr "Клієнт IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5339,19 +5265,19 @@ msgstr "" "\">підтримувані клієнтські застосунки. До Radicale може мати доступ будь-" "який користувач з імʼям входу для {box_name}." -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "Календар і адресна книга" @@ -5423,7 +5349,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Оновлено налаштування прав доступу" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5436,7 +5362,7 @@ msgstr "" "MIME, адресної книжки, маніпулювання теками, пошуку повідомлень та перевірки " "правопису." -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5450,7 +5376,7 @@ msgstr "" "imap.example.com. Для IMAP через SSL (рекомендується), поле " "сервера виглядає як imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5465,17 +5391,17 @@ msgstr "" "Google (https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "Клієнт ел. пошти" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5484,31 +5410,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "Доступ до приватних поширень" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "Мережеве сховище файлів" @@ -5616,7 +5542,7 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "Помилка вимкнення поширення: {error_message}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -5624,7 +5550,7 @@ msgstr "" "Searx — це система збірного пошуку в Інтернеті, яка поважає приватність. " "Вона збирає і відображає результати з різних пошукових систем." -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -5632,15 +5558,15 @@ msgstr "" "Searx може використовуватися для обходу стеження та профілювання пошуковими " "системами." -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "Пошук в Інтернеті" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "Вебпошук" @@ -5802,32 +5728,32 @@ msgstr "" msgid "Updated security configuration" msgstr "Оновлено конфіґурацію безпеки" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli дозволяє зберігати і ділитися закладками." -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "Закладки" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5836,17 +5762,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5981,7 +5907,7 @@ msgstr "Змінити ділянку" msgid "Share deleted." msgstr "Ділянку видалено." -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " @@ -5991,7 +5917,7 @@ msgstr "" "можна використовувати для відкочування системи до попереднього хорошого " "стану в разі небажаних змін системи." -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6002,7 +5928,7 @@ msgstr "" "встановлення ПЗ. Старі зрізи автоматично видалятимуться відповідно до " "налаштувань нижче." -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for резервних копій, поки вони " "не зберігаються на одному розділі. " -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "Зрізи сховища" @@ -6209,7 +6135,7 @@ msgstr "Систему потрібно перезапустити, щоб за msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6217,7 +6143,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "Сервер захищеної оболонки (SSH)" @@ -6258,7 +6184,7 @@ msgstr "автентифікація SSH із вимкненим паролем. msgid "SSH authentication with password enabled." msgstr "автентифікація SSH із дозволеним паролем." -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6266,7 +6192,7 @@ msgstr "" msgid "Login" msgstr "Вхід" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6277,106 +6203,106 @@ msgstr "" "{box_name}. Ви можете переглядати медія-сховище під час використання, " "монтувати і відмонтовувати знімні накопичувачі, розширювати розділ root тощо." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "Сховище" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} байтів" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} КБ" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} МБ" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} ҐБ" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} ТБ" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "Операція невдала." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "Операцію скасовано." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Пристрій вже відмонтований." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "Час операції вийшов." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "Операція вже була скасована." -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Пристрій уже змонтовано." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Пристрій не змонтовано." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Пристрій змонтовано іншим користувачем." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Мало місця в розділі системи: {percent_used}% використано, {free_space} " "вільно." -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "Мало місця на диску" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6492,7 +6418,7 @@ msgstr "Пристрій можна безпечно витягати." msgid "Error ejecting device: {error_message}" msgstr "Помилка виймання пристрою: {error_message}" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6500,7 +6426,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6512,20 +6438,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "Адміністрування програми Syncthing" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "Синхронізація файлів" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6533,7 +6459,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6541,11 +6467,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "Розподілене файлове сховище" @@ -6580,7 +6506,7 @@ msgstr "" msgid "Remove" msgstr "Вилучити" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6593,40 +6519,40 @@ msgstr "" "під час вебсерфінгу, проєкт Tor радить використовувати Tor Browser." -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6754,15 +6680,11 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "Налаштування не змінено" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission – це клієнт BitTorrent із вебінтерфейсом." -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." @@ -6770,16 +6692,16 @@ msgstr "" "BitTorrent – це протокол обміну файлами peer-to-peer. Зауважте, що " "BitTorrent не анонімний." -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "Будь ласка, не змінюйте типовий порт демона transmission." -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "Transmission" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -6789,7 +6711,7 @@ msgstr "" "спроєктований читати новини з будь-яких місць, при цьому намагається бути " "максимально близьким до стільничної програми, на скільки це можливо." -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any користувача, що може входити у {box_name}." -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -6806,15 +6728,15 @@ msgstr "" "Коли використовуєте мобільний або стільничний застосунок для Tiny Tiny RSS, " "використовуйте URL /tt-rss-app для зʼєднання." -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "Читати і підписатися на стрічки новин" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "Читачка новинних стрічок" @@ -6822,12 +6744,12 @@ msgstr "Читачка новинних стрічок" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (відгілка)" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "Перевірити і застосувати останні оновлення безпеки і ПЗ." -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6835,30 +6757,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Оновити" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "Оновлення" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "FreedomBox оновлено" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "Не можливо запустити оновлення дистрибутиву" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "Оновлення дистрибутиву розпочато" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7036,7 +6965,7 @@ msgstr "Не вдалося розпочати оновлення." msgid "Frequent feature updates activated." msgstr "Оновлення частих можливостей активовано." -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -7047,7 +6976,7 @@ msgstr "" "застосунків. Деякі застосунки також вимагають, щоб обліківка була частиною " "групи, щоб отримати авторизований доступ до застосунку." -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7059,15 +6988,15 @@ msgstr "" "користувачі з групи admin можуть змінювати застосунки або системні " "налаштування." -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "Користувачі і групи" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "Доступ до всіх сервісів і налаштувань системи" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7302,11 +7231,11 @@ msgstr "Зберегти пароль" msgid "Password changed successfully." msgstr "Пароль змінено успішно." -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "WireGuard — це швидкий, сучасний, безпечний тунель VPN." -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " @@ -7315,7 +7244,7 @@ msgstr "" "Може використовуватися для зʼєднання з постачальником VPN, що підтримує " "WireGuard, і перенаправлення всього вихідного трафіку {box_name} через VPN." -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7612,7 +7541,7 @@ msgstr "Видалити зʼєднання до сервера" msgid "Server deleted." msgstr "Сервер видалено." -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7621,7 +7550,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7630,26 +7559,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "WordPress" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "Вебсайт і блоґ" @@ -7663,7 +7592,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7676,7 +7605,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7684,11 +7613,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "Zoph" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "Організатор фотографій" @@ -7724,23 +7653,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "Помилка під час установлення" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "установлення" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "завантаження" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "зміна медія" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "файл конфіґурації: {file}" @@ -7804,6 +7733,10 @@ msgstr "Функціональність ядра та вебінтерфейс msgid " Home" msgstr " Домівка" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "Домівка" + #: plinth/templates/base.html:115 msgid " Apps" msgstr " Застосунки" @@ -8103,6 +8036,81 @@ msgstr "%(percentage)s%% завершено" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "The alias was taken" +#~ msgstr "Аліяс взято" + +#~ msgid "Must be at least 2 characters long" +#~ msgstr "Має складатися щонайменше з 2 символів" + +#~ msgid "User does not exist" +#~ msgstr "Користувача не існує" + +#~ msgid "Postfix local recipient maps" +#~ msgstr "Мапи локальних отримувачів Postfix" + +#~ msgid "Disable selected" +#~ msgstr "Вимкнути вибране" + +#~ msgid "Enable selected" +#~ msgstr "Дозволити вибране" + +#~ msgid "Delete selected" +#~ msgstr "Видалити вибране" + +#~ msgid "New value" +#~ msgstr "Нове значення" + +#~ msgid "There was a problem with your request. Please try again." +#~ msgstr "Були проблеми з Вашим запитом. Спробуйте ще раз." + +#~ msgid "Postfix TLS" +#~ msgstr "TLS для Postfix" + +#~ msgid "Dovecot TLS" +#~ msgstr "TLS для Dovecot" + +#~ msgid "Visit Rspamd administration interface" +#~ msgstr "Відвідайте інтерфейс адміністрування Rspamd" + +#~ msgid "You do not have a home directory." +#~ msgstr "У вас нема домашнього каталогу." + +#~ msgid "Create one to begin receiving emails." +#~ msgstr "Створити одну, щоб отримувати ел. пошту." + +#~ msgid "Create home directory" +#~ msgstr "Створити домашній каталог" + +#~ msgid "Your home directory is ready to receive emails." +#~ msgstr "Ваш домашній каталог готовий до отримання ел. пошти." + +#~ msgid "Keep current settings" +#~ msgstr "Зберігати поточні налаштування" + +#~ msgid "Use Let's Encrypt" +#~ msgstr "Використовувати Let's Encrypt" + +#~ msgid "Common name" +#~ msgstr "Звичайна назва" + +#~ msgid "Use custom values" +#~ msgstr "Використовувати власні значення" + +#~ msgid "Certificate path" +#~ msgstr "Шлях сертифікату" + +#~ msgid "Private key path" +#~ msgstr "Шлях приватного ключа" + +#~ msgid "My Mail" +#~ msgstr "Моя пошта" + +#~ msgid "Enabled aliases" +#~ msgstr "Дозволені аліяси" + +#~ msgid "Disabled aliases" +#~ msgstr "Вимкнені аліяси" + #~ msgid "Cannot delete the only administrator in the system." #~ msgstr "Не можливо видалити лише адміністратора системи." diff --git a/plinth/locale/vi/LC_MESSAGES/django.po b/plinth/locale/vi/LC_MESSAGES/django.po index 58c3a759a..2887d7694 100644 --- a/plinth/locale/vi/LC_MESSAGES/django.po +++ b/plinth/locale/vi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-07-28 08:34+0000\n" "Last-Translator: bruh \n" "Language-Team: Vietnamese calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1043,15 +1044,15 @@ msgstr "" "ứng dụng. Tất cả người dùng có quyền truy cập đều có thể sử dụng tất cả các " "thư viện." -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "Sử dụng thư viện sách điện tử của calibre" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "Thư viện sách điện tử" @@ -1125,7 +1126,7 @@ msgstr "Đã xoá {name}." msgid "Could not delete {name}: {error}" msgstr "Không thể xoá {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1138,7 +1139,7 @@ msgstr "" "năng nâng cao thường không bắt buộc phải có đều có thể được điều khiển. Cũng " "có một ứng dụng dòng lệnh dựa trên web cho các hoạt động dòng lệnh." -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1150,7 +1151,7 @@ msgstr "" "mở các cổng tường lửa tùy chỉnh và các hoạt động mạng nâng cao như là gắn " "kết, bắc cầu và quản lý VLAN." -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1159,7 +1160,7 @@ msgstr "" "Nó có thể được truy cập bởi bất kỳ người dùng nào trên {box_name} thuộc về nhóm admin." -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1167,12 +1168,12 @@ msgstr "" "Cockpit yêu cầu bạn truy cập nó qua một tên miền. Nó sẽ không hoạt động khi " "được truy cập vào bằng một địa chỉ IP với tư cách là một phần của URL." -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "Quản trị máy chủ" @@ -1335,7 +1336,7 @@ msgstr "Đang hiện các ứng dụng và tính năng nâng cao" msgid "Hiding advanced apps and features" msgstr "Đang ẩn các ứng dụng và tính năng nâng cao" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1347,7 +1348,7 @@ msgstr "" "các máy chủ giao tiếp khác có thể sử dụng nó để thiết lập một cuộc gọi giữa " "các bên mà không thể kết nối với nhau nếu không có nó." -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as ejabberd cần phải được thiết lập với các chi tiết được cung " "cấp ở đây." -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "Trợ giúp cho VoIP" @@ -1393,7 +1394,7 @@ msgstr "Sử dụng các URL sau để thiết lập máy chủ giao tiếp củ msgid "Use the following shared authentication secret:" msgstr "Sử dụng bí mật xác thực được chia sẻ sau đây:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." @@ -1401,11 +1402,11 @@ msgstr "" "Máy chủ thời gian mạng là một chương trình giữ cho thời gian hệ thống được " "đồng bộ với các máy chủ trên Internet." -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "Ngày & Giờ" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "Đã đồng bộ thời gian đến máy chủ NTP" @@ -1434,11 +1435,11 @@ msgstr "Lỗi khi đặt múi giờ: {exception}" msgid "Time zone set" msgstr "Đã đặt múi giờ" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge là một ứng dụng khách cho BitTorrent, nó có một Giao diện Web." -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -1446,17 +1447,17 @@ msgstr "" "Mật khẩu mặc định là 'deluge', nhưng bạn nên đăng nhập và đổi nó ngay lập " "tức sau khi bật dịch vụ này." -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "Tải các tệp xuống bằng các ứng dụng BitTorrent" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "Ứng dụng khách trên web cho BitTorrent" @@ -1482,18 +1483,18 @@ msgid "Diagnostics" msgstr "Chẩn đoán" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "đã qua" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "đã trượt" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "lỗi" @@ -1583,7 +1584,7 @@ msgstr "Kết quả" msgid "Diagnostic Test" msgstr "Kiểm tra chẩn đoán" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." @@ -1591,12 +1592,12 @@ msgstr "" "diaspora* là một mạng xã hội phi tập trung, ở đó bạn có thể lưu trữ và kiểm " "soát dữ liệu của bạn." -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "Mạng xã hội được liên kết" @@ -1657,7 +1658,7 @@ msgstr "Đăng ký người dùng đã bật" msgid "User registrations disabled" msgstr "Đăng ký người dùng đã tắt" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1668,7 +1669,7 @@ msgstr "" "24h), những người khác có thể khó tìm bạn trên Internet. Việc này sẽ ngăn " "những người khác tìm các dịch vụ được {box_name} này cung cấp." -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1685,11 +1686,11 @@ msgstr "" "phân tên DNS của bạn cho IP mới, và nếu ai đó từ Internet hỏi tên DNS của " "bạn, họ sẽ nhận một phản hồi với địa chỉ IP hiện tại của bạn." -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "Ứng dụng khách DNS động" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 msgid "Dynamic Domain Name" msgstr "Tên miền động" @@ -1919,13 +1920,13 @@ msgstr "" msgid "Dynamic DNS Status" msgstr "" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, python-brace-format msgid "" "To actually communicate, you can use the web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -2059,50 +2060,20 @@ msgstr "Máy chủ tên miền" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "Lỗi khi đặt tên miền: {exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -2129,18 +2100,61 @@ msgstr "" msgid "Has a TLS certificate" msgstr "Chấp nhận tất cả chứng chỉ SSL" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid domain name" +msgid "Enter a valid domain" +msgstr "Tên miền không hợp lệ" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "TLS domain" msgid "domain" msgstr "Miền TLS" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "Quản lý thư viện" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -2157,173 +2171,81 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "Quản lý thư viện" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "Enable scheduled backups" -msgid "Enable selected" -msgstr "Bật sao lưu được lên lịch" +#| msgid "Enable DNSSEC" +msgid "Enable" +msgstr "Bật DNSSEC" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete files" -msgid "Delete selected" -msgstr "Xoá tệp" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "Tạo một bản sao lưu mới" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "Cập nhật" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Manage Spam" +msgstr "Quản lý thư viện" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "Loại dịch vụ" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "Tạo kho" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "Đã đặt tên miền" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "Đã xảy ra lỗi trong khi thiết lập." + +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "" - -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2331,7 +2253,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2363,19 +2285,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2451,7 +2360,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2462,21 +2371,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2837,7 +2746,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2845,31 +2754,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2906,14 +2815,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2922,15 +2831,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -3007,11 +2916,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3019,11 +2928,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -3042,17 +2951,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -3061,7 +2970,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3071,7 +2980,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3079,15 +2988,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3188,7 +3097,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3198,14 +3107,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3276,7 +3185,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3284,7 +3193,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3293,18 +3202,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3386,7 +3295,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3395,11 +3304,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3465,7 +3374,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3476,15 +3385,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3524,36 +3433,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3565,7 +3474,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3577,7 +3486,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3588,7 +3497,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3710,24 +3619,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3778,23 +3687,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4274,6 +4183,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4711,7 +4625,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4800,7 +4714,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4811,20 +4725,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4888,7 +4802,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4897,33 +4811,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4932,15 +4846,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -5074,25 +4988,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -5153,14 +5067,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5170,20 +5084,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5194,7 +5108,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5214,7 +5128,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5224,19 +5138,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5303,7 +5217,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5311,7 +5225,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5320,7 +5234,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5330,17 +5244,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5349,31 +5263,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5481,27 +5395,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5656,32 +5570,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5690,17 +5604,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5829,14 +5743,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5844,14 +5758,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -6041,7 +5955,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6049,7 +5963,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -6090,7 +6004,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6098,7 +6012,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6109,104 +6023,104 @@ msgstr "" "của bạn. Bạn có thể xem phương tiện lưu trữ hiện đang sử dụng, gắn và bỏ gắn " "phương tiện có thể rút ra, mở rộng phân vùng root, v.v." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "Thiết bị này đã đang bỏ gắn rồi." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "Đang thử bỏ gắn một thiết bị đang bận." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "Thiết bị này đã được gắn rồi." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "Thiết bị này chưa được gắn." -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "Thiết bị này được một người dùng khác gắn." -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6320,7 +6234,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6328,7 +6242,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6340,20 +6254,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6361,7 +6275,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6369,11 +6283,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6408,7 +6322,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6417,40 +6331,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6576,58 +6490,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6635,12 +6545,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6648,30 +6558,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "Cập nhật" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6837,14 +6754,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6852,15 +6769,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -7086,18 +7003,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7391,7 +7308,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7400,7 +7317,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7409,26 +7326,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7442,7 +7359,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7455,7 +7372,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7463,11 +7380,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7501,23 +7418,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7578,6 +7495,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" @@ -7849,3 +7770,23 @@ msgstr "" #: plinth/web_framework.py:117 msgid "Gujarati" msgstr "" + +#, fuzzy +#~| msgid "Enable scheduled backups" +#~ msgid "Enable selected" +#~ msgstr "Bật sao lưu được lên lịch" + +#, fuzzy +#~| msgid "Delete files" +#~ msgid "Delete selected" +#~ msgstr "Xoá tệp" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "Tạo kho" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "Đã đặt tên miền" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 3a9ff0e27..e397594e0 100644 --- a/plinth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hans/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-09-18 13:33+0000\n" "Last-Translator: 池边树下 \n" "Language-Team: Chinese (Simplified) calibre group will be able to access the " "app. All users with access can use all the libraries." @@ -1004,15 +1005,15 @@ msgstr "" "只有属于calibre组的用户才能够访问该应用程序。所有有权限的用户都可以" "使用所有的图书馆。" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "使用 calibre 电子书库" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "calibre" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "电子书库" @@ -1084,7 +1085,7 @@ msgstr "{name} 已删除。" msgid "Could not delete {name}: {error}" msgstr "不能删除 {name}:{error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1096,7 +1097,7 @@ msgstr "" "个 {box_name} 上,许多通常不会需要的高级功能也可被控制。您也可以使用基于网页" "的终端来进行控制台操作。" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1106,7 +1107,7 @@ msgstr "" "Cockpit可以用来执行高级存储操作,如磁盘分区和RAID管理。它还可以用来打开自定义" "防火墙端口和高级网络,如绑定、桥接和VLAN管理。" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " @@ -1114,7 +1115,7 @@ msgid "" msgstr "" "它可以由属于管理组的{box_name}上的任何用户访问。" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." @@ -1122,12 +1123,12 @@ msgstr "" "Cockpit要求你通过一个域名来访问它。当使用IP地址作为URL的一部分访问时,它将无" "法工作。" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "服务器管理" @@ -1283,7 +1284,7 @@ msgstr "展现先进的应用和特征" msgid "Hiding advanced apps and features" msgstr "隐藏先进的应用和特征" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1293,7 +1294,7 @@ msgstr "" "Coturn是一个服务器,通过提供TURN和STUN协议的实现来促进音频/视频通话和会议。" "WebRTC、SIP和其他通信服务器可以使用它在无法相互连接的各方之间建立通话。" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse或" "ejabberd等服务器需要用这里提供的细节进行配置。" -#: plinth/modules/coturn/__init__.py:62 +#: plinth/modules/coturn/__init__.py:63 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:63 +#: plinth/modules/coturn/__init__.py:64 msgid "VoIP Helper" msgstr "网络电话助手" @@ -1339,17 +1340,17 @@ msgstr "使用以下URL来配置你的通信服务器。" msgid "Use the following shared authentication secret:" msgstr "正在使用以下磁盘:" -#: plinth/modules/datetime/__init__.py:26 +#: plinth/modules/datetime/__init__.py:24 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." msgstr "网络时间服务是与 Internet 上的服务器同步系统时间的一个程序。" -#: plinth/modules/datetime/__init__.py:70 +#: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" msgstr "日期与时间" -#: plinth/modules/datetime/__init__.py:116 +#: plinth/modules/datetime/__init__.py:115 msgid "Time synchronized to NTP server" msgstr "时间同步到NTP服务器" @@ -1376,11 +1377,11 @@ msgstr "设置时区错误:{exception}" msgid "Time zone set" msgstr "时区设置" -#: plinth/modules/deluge/__init__.py:27 +#: plinth/modules/deluge/__init__.py:28 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge 是一个有网页界面的 BitTorrent 客户端。" -#: plinth/modules/deluge/__init__.py:28 +#: plinth/modules/deluge/__init__.py:29 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /deluge 路径访问网页" "服务器。默认密码是“deluge”,但是你需要在启用此服务以后立刻登录并修改它。" -#: plinth/modules/deluge/__init__.py:47 -#: plinth/modules/transmission/__init__.py:50 +#: plinth/modules/deluge/__init__.py:48 +#: plinth/modules/transmission/__init__.py:51 msgid "Download files using BitTorrent applications" msgstr "使用BitTorrent应用程序下载文件" -#: plinth/modules/deluge/__init__.py:51 plinth/modules/deluge/manifest.py:6 +#: plinth/modules/deluge/__init__.py:52 plinth/modules/deluge/manifest.py:6 msgid "Deluge" msgstr "启用 Deluge" -#: plinth/modules/deluge/__init__.py:53 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:54 +#: plinth/modules/transmission/__init__.py:57 msgid "BitTorrent Web Client" msgstr "" "BitTorrent 网页客户端\n" @@ -1431,12 +1432,12 @@ msgid "Diagnostics" msgstr "诊断程序" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:29 +#: plinth/modules/email_server/templates/email_server.html:41 msgid "passed" msgstr "通过了" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:27 +#: plinth/modules/email_server/templates/email_server.html:39 #: plinth/modules/networks/views.py:49 #, fuzzy #| msgid "Setup failed." @@ -1444,7 +1445,7 @@ msgid "failed" msgstr "安装失败。" #: plinth/modules/diagnostics/__init__.py:100 -#: plinth/modules/email_server/templates/email_server.html:25 +#: plinth/modules/email_server/templates/email_server.html:37 msgid "error" msgstr "错误" @@ -1536,18 +1537,18 @@ msgstr "结果" msgid "Diagnostic Test" msgstr "诊断测试" -#: plinth/modules/diaspora/__init__.py:45 +#: plinth/modules/diaspora/__init__.py:46 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." msgstr "diaspora*是一个去中心化的社交网络,你可以存储和控制自己的数据。" -#: plinth/modules/diaspora/__init__.py:68 +#: plinth/modules/diaspora/__init__.py:70 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" msgstr "diaspora*" -#: plinth/modules/diaspora/__init__.py:69 +#: plinth/modules/diaspora/__init__.py:71 msgid "Federated Social Network" msgstr "联合社交网络" @@ -1610,7 +1611,7 @@ msgstr "应用程序已启用" msgid "User registrations disabled" msgstr "应用程序已禁用" -#: plinth/modules/dynamicdns/__init__.py:29 +#: plinth/modules/dynamicdns/__init__.py:30 #, python-brace-format msgid "" "If your Internet provider changes your IP address periodically (i.e. every " @@ -1620,7 +1621,7 @@ msgstr "" "如果您的互联网提供商定期(例如每24小时)更改您的IP地址,其他人可能很难在互联" "网上找到您。这会阻止其他人找到由此 {box_name} 提供的服务。" -#: plinth/modules/dynamicdns/__init__.py:33 +#: plinth/modules/dynamicdns/__init__.py:34 msgid "" "The solution is to assign a DNS name to your IP address and update the DNS " "name every time your IP is changed by your Internet provider. Dynamic DNS " @@ -1636,11 +1637,11 @@ msgstr "" "将您的 DNS 名称分配给新的 IP,如果互联网上的某人要求您的 DNS 名称,他们将收到" "一个带有您当前 IP 地址的响应。" -#: plinth/modules/dynamicdns/__init__.py:56 +#: plinth/modules/dynamicdns/__init__.py:58 msgid "Dynamic DNS Client" msgstr "动态 DNS 客户端" -#: plinth/modules/dynamicdns/__init__.py:66 +#: plinth/modules/dynamicdns/__init__.py:71 #, fuzzy #| msgid "Domain Name" msgid "Dynamic Domain Name" @@ -1866,7 +1867,7 @@ msgstr "配置动态 DNS" msgid "Dynamic DNS Status" msgstr "动态 DNS 状态" -#: plinth/modules/ejabberd/__init__.py:39 +#: plinth/modules/ejabberd/__init__.py:40 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1874,7 +1875,7 @@ msgstr "" "XMPP 是一种开放标准的通信协议。在这里你可以运行并配置您的 XMPP 服务器,称为 " "ejabberd。" -#: plinth/modules/ejabberd/__init__.py:42 +#: plinth/modules/ejabberd/__init__.py:43 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the web client or any other XMPP 客户端。" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn应用程序或配置一个外部服务器。" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -2032,50 +2033,20 @@ msgstr "Web 服务器" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 #, fuzzy #| msgid "Error setting domain name: {exception}" msgid "Postfix domain name config" msgstr "设置域名错误:{exception}" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 #, fuzzy #| msgid "Available Domains" @@ -2104,18 +2075,63 @@ msgstr "" msgid "Has a TLS certificate" msgstr "没有证书" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid domain" +msgstr "服务器名称无效" + +#: plinth/modules/email_server/forms.py:18 +#, fuzzy +#| msgid "Invalid server name" +msgid "Enter a valid destination" +msgstr "服务器名称无效" + +#: plinth/modules/email_server/forms.py:22 #, fuzzy #| msgid "Domain" msgid "domain" msgstr "域名" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "管理库" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "启用" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "已禁用" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 #, fuzzy #| msgid "Enable Roundcube" @@ -2134,191 +2150,85 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "管理库" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 +#: plinth/modules/email_server/templates/email_alias.html:24 #, fuzzy #| msgid "Disabled" -msgid "Disable selected" +msgid "Disable" msgstr "已禁用" #: plinth/modules/email_server/templates/email_alias.html:26 #, fuzzy -#| msgid "cable is connected" -msgid "Enable selected" -msgstr "线缆已连接" +#| msgid "Enabled" +msgid "Enable" +msgstr "启用" -#: plinth/modules/email_server/templates/email_alias.html:29 -#, fuzzy -#| msgid "Delete Snapshot" -msgid "Delete selected" -msgstr "删除快照" - -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "创建新备份" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 #, fuzzy #| msgid "Address" msgid "Add" msgstr "地址" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" +msgstr "域名" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "更新" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Create Snapshot" +msgid "Manage Spam" +msgstr "创建快照" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Type" msgid "Service Alert" msgstr "服务类型" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -#, fuzzy -#| msgid "Download directory" -msgid "You do not have a home directory." -msgstr "下载目录" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "创建存储库" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -#, fuzzy -#| msgid "Current status:" -msgid "Keep current settings" -msgstr "当前状态:" - -#: plinth/modules/email_server/templates/tls_form.html:19 -#, fuzzy -#| msgid "Certificates (Let's Encrypt)" -msgid "Use Let's Encrypt" -msgstr "证书(Let's Encrypt)" - -#: plinth/modules/email_server/templates/tls_form.html:24 -#, fuzzy -#| msgid "Domain name set" -msgid "Common name" -msgstr "域名集" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -#, fuzzy -#| msgid "Certificate Status" -msgid "Certificate path" -msgstr "证书状态" - -#: plinth/modules/email_server/templates/tls_form.html:53 -#, fuzzy -#| msgid "Create User" -msgid "Private key path" -msgstr "创建用户" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "主页" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "安全" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "域名" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 +#: plinth/modules/email_server/views.py:217 #, fuzzy -#| msgid "Enable damage" -msgid "Enabled aliases" -msgstr "启用伤害" +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "在配置过程中出错。" -#: plinth/modules/email_server/views.py:181 -#, fuzzy -#| msgid "Disabled" -msgid "Disabled aliases" -msgstr "已禁用" +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" +msgstr "设置未改变" -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2328,7 +2238,7 @@ msgstr "" "防火墙控制你的 {box_name} 上的进出网络流量。启用并正确配置防火墙上可以减少来" "自互联网的安全威胁。" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "防火墙" @@ -2365,19 +2275,6 @@ msgstr "" msgid "Service/Port" msgstr "服务/端口" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "启用" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "已禁用" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "允许" @@ -2457,7 +2354,7 @@ msgstr "启动安装程序" msgid "Setup Complete" msgstr "安装完成" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2468,21 +2365,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2922,7 +2819,7 @@ msgstr "关于 {box_name}" msgid "{box_name} Manual" msgstr "{box_name} 手册" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2930,7 +2827,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki。" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "启用应用程序" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "Tor 匿名网络" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -3003,7 +2900,7 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -3019,7 +2916,7 @@ msgstr "" "Markdown 和常见的博客功能,如评论和 RSS 源。启用后,博客和 Wiki 将可从 /ikiwiki 访问。" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -3028,17 +2925,17 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 #, fuzzy #| msgid "wiki" msgid "ikiwiki" msgstr "维基" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "Wiki 和博客" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" @@ -3120,11 +3017,11 @@ msgstr "{name} 已删除。" msgid "Could not delete {title}: {error}" msgstr "不能删除 {name}:{error}" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted 是一个 Gobby 服务器,Gobby 是一个协作化的文本编辑器。" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -3134,11 +3031,11 @@ msgstr "" "要使用它, 下载 Gobby 的桌面客户端并" "安装。然后启动 Gobby 并选择“连接到服务器”并书入你的 {box_name} 域名即可。" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -3167,17 +3064,17 @@ msgstr "" "要使用它, 下载 Gobby 的桌面客户" "端并安装。然后启动 Gobby 并选择“连接到服务器”并书入你的 {box_name} 域名即可。" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "JSXC 是一个 XMPP 网页客户端,主要用于连接本地 XMPP 服务器的连接。" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 #, fuzzy #| msgid "" #| "Chat Client \n" @@ -3192,7 +3089,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -3205,7 +3102,7 @@ msgstr "" "动获取和设置每个可用域名的数字证书。它通过向 Let's Encrypt 证明自己是一个域名" "的所有者。Let's Encrypt 是一个证书颁发机构(CA)。" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -3216,19 +3113,19 @@ msgstr "" "(ISRG)为公众利益而设立。请在使用此服务之前阅读并同意 Let's Encypt 订阅者协议。" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 #, fuzzy #| msgid "Certificates (Let's Encrypt)" msgid "Let's Encrypt" msgstr "证书(Let's Encrypt)" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 #, fuzzy #| msgid "Certificate Status" msgid "Certificates" msgstr "证书状态" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3341,7 +3238,7 @@ msgstr "成功为域名 {domain} 吊销证书" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "无法为 {domain} 撤销证书:{error}" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3351,14 +3248,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 #, fuzzy #| msgid "" #| "Chat Server \n" @@ -3444,7 +3341,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3452,7 +3349,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3461,18 +3358,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "共笔文档" @@ -3578,7 +3475,7 @@ msgstr "设置未改变" msgid "Server URL updated" msgstr "{name} 已删除。" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3590,11 +3487,11 @@ msgstr "" "(30000)上运行 Minetest 服务器。要连接到服务器,需要 Minetest 客户端。" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 #, fuzzy #| msgid "" #| "Block Sandbox \n" @@ -3683,7 +3580,7 @@ msgstr "玩家对战(PVP)配置已更新" msgid "Damage configuration updated" msgstr "伤害配置已更新" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3694,15 +3591,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 #, fuzzy #| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" @@ -3744,38 +3641,38 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 #, fuzzy #| msgid "Monkeysphere" msgid "MLDonkey" msgstr "Monkeysphere" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" @@ -3793,7 +3690,7 @@ msgstr "Monkeysphere" msgid "AMLDonkey" msgstr "Monkeysphere" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3811,7 +3708,7 @@ msgstr "" "Monkeysphere " "SSH 文档。" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3827,7 +3724,7 @@ msgstr "" "装 Monkeysphere网站上" "提供的一些软件。" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "Monkeysphere" @@ -3951,13 +3848,13 @@ msgstr "已发布到密钥服务器的密钥。" msgid "Error occurred while publishing key." msgstr "发布密钥时出现错误。" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "Mumble 是一个开放源码的低延迟、 加密、 高品质语音聊天软件。" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3966,11 +3863,11 @@ msgstr "" "您可以使用常规端口 64738 连接到您的 Mumble 服务器。您可以从桌面和 Android 设" "备连接 Mumble 客户端。" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 #, fuzzy #| msgid "" #| "Voice Chat \n" @@ -4033,23 +3930,23 @@ msgstr "" msgid "Services" msgstr "服务" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "网络" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "在 IPv{kind} 上使用 DNSSEC" @@ -4544,6 +4441,11 @@ msgstr "IPv6" msgid "This connection is not active." msgstr "此连接未处于激活状态。" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "安全" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -5039,7 +4941,7 @@ msgstr "通用" msgid "TUN or TAP interface" msgstr "接口" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5136,7 +5038,7 @@ msgstr "连接 {name} 已删除。" msgid "Failed to delete connection: Connection not found." msgstr "删除连接失败: 找不到连接。" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -5151,26 +5053,26 @@ msgstr "" "供的私人/内部服务。您还可以通过 {box_name} 访问互联网的其他部分,以增加安全性" "和匿名性。" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 #, fuzzy #| msgid "Connection Type" msgid "Connect to VPN services" msgstr "连接类型" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "打开" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "虚拟专用网络(OpenVPN)" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -5247,7 +5149,7 @@ msgstr "配置文件是特定于每个 %(box_name)s 用户的。请保持其私 msgid "Download my profile" msgstr "下载我的配置文件" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -5258,23 +5160,23 @@ msgstr "" "PageKite 是一种在您没有直接连接到互联网时暴露 {box_name} 服务的系统。 如果您" "的 {box_name} 服务无法从互联网访问,您只需要设置 PageKite。这包括以下情况:" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "{box_name} 位于受限的防火墙的后面。" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "{box_name} 已连接到非你控制的(无线)路由器。" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "您的 ISP 没有提供外部的 IP 地址而是通过提供 NAT 连接互联网。" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 #, fuzzy #| msgid "" #| "Your ISP does not provide you a static IP address and your IP address " @@ -5285,11 +5187,11 @@ msgid "" msgstr "" "您的 ISP 不提供你一个静态的 IP 地址且你连接到互联网的 IP 地址每次会更改。" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "您的 ISP 限制传入的连接。" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, fuzzy, python-brace-format #| msgid "" #| "PageKite works around NAT, firewalls and IP-address limitations by using " @@ -5307,19 +5209,19 @@ msgstr "" "使用任何 pagekite 服务提供商,例如pagekite." "net。将来,您甚至可以使用好友的 {box_name}。" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 #, fuzzy #| msgid "Pagekite" msgid "PageKite" msgstr "Pagekite" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 #, fuzzy #| msgid "Public Visibility (PageKite)" msgid "Public Visibility" msgstr "公开可见性(PageKite)" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 #, fuzzy #| msgid "PageKite Account" msgid "PageKite Domain" @@ -5469,25 +5371,25 @@ msgstr "" "请参见 SSH 客户端安装 说明" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 #, fuzzy #| msgid "System Configuration" msgid "System Monitoring" @@ -5555,7 +5457,7 @@ msgstr "" msgid "Shut Down Now" msgstr "现在关闭" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -5564,7 +5466,7 @@ msgstr "" "Privoxy 是一个非缓存Web代理,具有高级过滤功能,用于增强隐私,修改网页数据和 " "HTTP 标头,控制访问,以及删除广告和其他令人讨厌的互联网垃圾。" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -5578,24 +5480,24 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ 或 http://p.p 中查看其配置详细信息和文档" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 #, fuzzy #| msgid "Enable Privoxy" msgid "Privoxy" msgstr "启用 Privoxy" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "Privoxy 网页代理" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "在 tcp{kind} 上通过 {proxy} 访问 {url}" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5610,7 +5512,7 @@ msgstr "" "以运行 Quassel 核心服务,使您始终在线,并且可以使用桌面或移动设备上的一个或多" "个 Quassel 客户端连接和断开连接。" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your 桌面移动设备客户端连接到 Quassel 的核心。" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -5635,7 +5537,7 @@ msgstr "Quassel IRC 客户端" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5655,19 +5557,19 @@ msgstr "" "user_documentation/#idcaldav-and-carddav-client\">支持的客户端应用程序。" "任何拥有 {box_name} 登录名的用户都可以访问 Radicale。" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 #, fuzzy #| msgid "" #| "Calendar and Addressbook \n" @@ -5746,7 +5648,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "访问权配置已更新" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5757,7 +5659,7 @@ msgstr "" "户界面。它提供您需要的从电子邮件客户端、MIME支持、地址簿、文件夹操作、消息搜" "索到拼写检查的完整功能。" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -5777,7 +5679,7 @@ msgstr "" "如 imap.example.com。对于基于 SSL 的 IMAP(建议),服务器填写为" "类似 imaps://imap.example.com。" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5791,7 +5693,7 @@ msgstr "" "href=\"https://www.google.com/settings/security/lesssecureapps\">https://www." "google.com/settings/security/lesssecureapps)中启用“安全性较低的应用”。" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 #, fuzzy #| msgid "" #| "Email Client \n" @@ -5801,13 +5703,13 @@ msgstr "" "邮件客户端\n" "(Roundcube)" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5816,31 +5718,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 #, fuzzy #| msgid "Network Time Server" msgid "Network File Storage" @@ -5974,27 +5876,27 @@ msgstr "共享" msgid "Error disabling share: {error_message}" msgstr "安装应用程序出错:{error}" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 #, fuzzy #| msgid "Web Server" msgid "Web Search" @@ -6179,11 +6081,11 @@ msgstr "设置限制访问错误:{exception}" msgid "Updated security configuration" msgstr "安全配置已更新" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli 允许您保存和共享书签。" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6196,11 +6098,11 @@ msgstr "" "当启用时,Shaarli 将可从 /shaarli 路径访问。请注" "意,Shaarli 只支持单用户帐户,您在首次访问时安装程序。" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 #, fuzzy #| msgid "" #| "Bookmarks \n" @@ -6210,14 +6112,14 @@ msgstr "" "书签\n" "(Shaarli)" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -6226,17 +6128,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -6391,7 +6293,7 @@ msgstr "编辑用户" msgid "Share deleted." msgstr "{name} 已删除。" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 #, fuzzy #| msgid "" #| "Snapshots allows creating and managing filesystem snapshots. These can be " @@ -6405,7 +6307,7 @@ msgstr "" "快照可以允许创建并管理文件系统快照。这些可以用来回滚系统到前一个已知可用的状" "态,以防意外改变系统状态。" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -6413,14 +6315,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 #, fuzzy #| msgid "Create Snapshot" msgid "Storage Snapshots" @@ -6636,7 +6538,7 @@ msgstr "系统需要重启以完成完全回滚。" msgid "Rollback to Snapshot" msgstr "回滚到快照" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -6644,7 +6546,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "安全 Shell(SSH)服务器" @@ -6693,7 +6595,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "远程服务器认证失败。" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -6701,7 +6603,7 @@ msgstr "" msgid "Login" msgstr "登录" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -6709,117 +6611,117 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "reStore" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "repro 服务正在运行" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "此服务已存在" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro 服务未运行" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6947,7 +6849,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6955,7 +6857,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6967,22 +6869,22 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" msgstr "安装此应用程序?" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6990,7 +6892,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6998,11 +6900,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -7039,7 +6941,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -7052,42 +6954,42 @@ msgstr "" "href=\"https://www.torproject.org/download/download-easy.html.en\">Tor浏览器" "。" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "隐藏的 Tor 服务" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "Tor 网桥中继" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "Tor 中继端口可用" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "已注册 Obfs3 传输" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "已注册 Obfs4 传输" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "在 tcp{kind} 上通过 Tor 访问 {url}" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "确认使用 Tor 通过 tcp{kind} 访问 {url}" @@ -7231,15 +7133,11 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS 端口是你 %(box_name)s 上的 TCP 端口 9050 。" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "设置未改变" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "Transmission 是一个有网页界面的 BitTorrent 客户端。" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 #, fuzzy #| msgid "" #| "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " @@ -7251,18 +7149,18 @@ msgstr "" "BitTorrent 是对等文件共享协议。Transmission 守护进程处理 Bitorrent 文件共享。" "请注意,BitTorrent 不是匿名。" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Transmission" msgstr "Transmission BitTorrent" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " @@ -7271,7 +7169,7 @@ msgstr "" "Tiny Tiny RSS是一个新闻源(RSS / Atom)阅读器和聚合器,旨在允许从任何位置读取" "新闻,同时提供尽可能接近真实的桌面应用程序体验。" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -7283,21 +7181,21 @@ msgstr "" "启用以后,Tiny Tiny RSS 将可从网页服务器的 /tt-rss 路" "径访问。" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 #, fuzzy #| msgid "" #| "News Feed Reader \n" @@ -7311,12 +7209,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -7324,36 +7222,43 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "更新" + +#: plinth/modules/upgrades/__init__.py:127 #, fuzzy #| msgid "Update" msgid "Updates" msgstr "更新" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" msgstr "FreedomBox" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 #, fuzzy #| msgid "Automatic upgrades disabled" msgid "Distribution update started" msgstr "已禁用自动升级" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -7554,14 +7459,14 @@ msgstr "开始升级失败。" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -7569,15 +7474,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "用户和组" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "请检查 LDAP 条目“{search_item}”" @@ -7832,18 +7737,18 @@ msgstr "更改密码" msgid "Password changed successfully." msgstr "已成功更改密码。" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -8213,7 +8118,7 @@ msgstr "删除连接" msgid "Server deleted." msgstr "{name} 已删除。" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -8222,7 +8127,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -8231,28 +8136,28 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 #, fuzzy #| msgid "Address" msgid "WordPress" msgstr "地址" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 #, fuzzy #| msgid "Wiki and Blog" msgid "Website and Blog" @@ -8270,7 +8175,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -8283,7 +8188,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -8291,11 +8196,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -8331,23 +8236,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "通用" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "安装时错误" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "安装" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "下载中" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "媒体改变" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "配置文件:{file}" @@ -8427,6 +8332,10 @@ msgstr "Plinth %(box_name)s 管理界面" msgid " Home" msgstr "主页" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "主页" + #: plinth/templates/base.html:115 #, fuzzy #| msgid "Apps" @@ -8742,6 +8651,66 @@ msgstr "已完成 %(percentage)s%%" msgid "Gujarati" msgstr "古吉拉特语" +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disable selected" +#~ msgstr "已禁用" + +#, fuzzy +#~| msgid "cable is connected" +#~ msgid "Enable selected" +#~ msgstr "线缆已连接" + +#, fuzzy +#~| msgid "Delete Snapshot" +#~ msgid "Delete selected" +#~ msgstr "删除快照" + +#, fuzzy +#~| msgid "Download directory" +#~ msgid "You do not have a home directory." +#~ msgstr "下载目录" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "创建存储库" + +#, fuzzy +#~| msgid "Current status:" +#~ msgid "Keep current settings" +#~ msgstr "当前状态:" + +#, fuzzy +#~| msgid "Certificates (Let's Encrypt)" +#~ msgid "Use Let's Encrypt" +#~ msgstr "证书(Let's Encrypt)" + +#, fuzzy +#~| msgid "Domain name set" +#~ msgid "Common name" +#~ msgstr "域名集" + +#, fuzzy +#~| msgid "Certificate Status" +#~ msgid "Certificate path" +#~ msgstr "证书状态" + +#, fuzzy +#~| msgid "Create User" +#~ msgid "Private key path" +#~ msgstr "创建用户" + +#, fuzzy +#~| msgid "Enable damage" +#~ msgid "Enabled aliases" +#~ msgstr "启用伤害" + +#, fuzzy +#~| msgid "Disabled" +#~ msgid "Disabled aliases" +#~ msgstr "已禁用" + #, fuzzy #~| msgid "Application enabled" #~ msgid "Public registration enabled" diff --git a/plinth/locale/zh_Hant/LC_MESSAGES/django.po b/plinth/locale/zh_Hant/LC_MESSAGES/django.po index 69c535dd1..d7a06191f 100644 --- a/plinth/locale/zh_Hant/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hant/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-25 18:50-0400\n" +"POT-Creation-Date: 2021-11-08 21:01-0500\n" "PO-Revision-Date: 2021-04-27 13:32+0000\n" "Last-Translator: James Pan \n" "Language-Team: Chinese (Traditional) calibre group will be able to access the " "app. All users with access can use all the libraries." msgstr "" -#: plinth/modules/calibre/__init__.py:58 +#: plinth/modules/calibre/__init__.py:59 msgid "Use calibre e-book libraries" msgstr "" -#: plinth/modules/calibre/__init__.py:61 plinth/modules/calibre/manifest.py:6 +#: plinth/modules/calibre/__init__.py:62 plinth/modules/calibre/manifest.py:6 msgid "calibre" msgstr "" -#: plinth/modules/calibre/__init__.py:62 +#: plinth/modules/calibre/__init__.py:63 msgid "E-book Library" msgstr "電子書圖書館" @@ -1051,7 +1052,7 @@ msgstr "{name} 已刪除。" msgid "Could not delete {name}: {error}" msgstr "無法刪除 {name}: {error}" -#: plinth/modules/cockpit/__init__.py:32 +#: plinth/modules/cockpit/__init__.py:33 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -1060,7 +1061,7 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:38 +#: plinth/modules/cockpit/__init__.py:39 msgid "" "Cockpit can be used to perform advanced storage operations such as disk " "partitioning and RAID management. It can also be used for opening custom " @@ -1068,25 +1069,25 @@ msgid "" "management." msgstr "" -#: plinth/modules/cockpit/__init__.py:43 +#: plinth/modules/cockpit/__init__.py:44 #, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:48 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" -#: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:9 +#: plinth/modules/cockpit/__init__.py:66 plinth/modules/cockpit/manifest.py:9 #: plinth/modules/performance/manifest.py:9 msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:66 +#: plinth/modules/cockpit/__init__.py:68 msgid "Server Administration" msgstr "" @@ -1231,7 +1232,7 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coturn/__init__.py:36 +#: plinth/modules/coturn/__init__.py:37 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " "providing an implementation of TURN and STUN protocols. WebRTC, SIP and " @@ -1239,7 +1240,7 @@ msgid "" "who are otherwise unable connect to each other." msgstr "" -#: plinth/modules/coturn/__init__.py:41 +#: plinth/modules/coturn/__init__.py:42 #, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as web client user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:50 +#: plinth/modules/ejabberd/__init__.py:51 #, python-brace-format msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" -#: plinth/modules/ejabberd/__init__.py:71 +#: plinth/modules/ejabberd/__init__.py:73 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:72 -#: plinth/modules/matrixsynapse/__init__.py:77 +#: plinth/modules/ejabberd/__init__.py:74 +#: plinth/modules/matrixsynapse/__init__.py:79 msgid "Chat Server" msgstr "" @@ -1885,48 +1886,18 @@ msgstr "域名服務器 DNS" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/aliases/__init__.py:67 -#: plinth/modules/email_server/aliases/__init__.py:74 -msgid "The alias was taken" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:13 -msgid "Must be at least 2 characters long" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:15 -msgid "Contains illegal characters" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:17 -msgid "Must start and end with a-z or 0-9" -msgstr "" - -#: plinth/modules/email_server/aliases/models.py:19 -msgid "Cannot be a number" -msgstr "" - #: plinth/modules/email_server/audit/domain.py:35 msgid "Postfix domain name config" msgstr "" -#: plinth/modules/email_server/audit/home.py:23 -#: plinth/modules/email_server/audit/home.py:32 -msgid "User does not exist" -msgstr "" - -#: plinth/modules/email_server/audit/ldap.py:66 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:67 +#: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:68 -msgid "Postfix local recipient maps" -msgstr "" - #: plinth/modules/email_server/audit/rcube.py:31 msgid "RoundCube availability" msgstr "" @@ -1951,16 +1922,59 @@ msgstr "" msgid "Has a TLS certificate" msgstr "" -#: plinth/modules/email_server/forms.py:7 +#: plinth/modules/email_server/forms.py:15 +#, fuzzy +#| msgid "Invalid domain name" +msgid "Enter a valid domain" +msgstr "無效的網域名稱" + +#: plinth/modules/email_server/forms.py:18 +msgid "Enter a valid destination" +msgstr "" + +#: plinth/modules/email_server/forms.py:22 msgid "domain" msgstr "" -#: plinth/modules/email_server/forms.py:14 +#: plinth/modules/email_server/forms.py:53 msgid "New alias (without @domain)" msgstr "" +#: plinth/modules/email_server/forms.py:60 +msgid "Contains illegal characters" +msgstr "" + +#: plinth/modules/email_server/forms.py:63 +msgid "Must start and end with a-z or 0-9" +msgstr "" + +#: plinth/modules/email_server/forms.py:66 +msgid "Cannot be a number" +msgstr "" + +#: plinth/modules/email_server/forms.py:76 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Aliases" +msgstr "管理圖書館" + +#: plinth/modules/email_server/forms.py:88 +#: plinth/modules/firewall/templates/firewall.html:54 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +msgid "Enabled" +msgstr "" + +#: plinth/modules/email_server/forms.py:91 +#: plinth/modules/firewall/templates/firewall.html:57 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 +#: plinth/templates/cards.html:34 +msgid "Disabled" +msgstr "" + #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:55 +#: plinth/modules/roundcube/__init__.py:57 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1977,169 +1991,81 @@ msgstr "" msgid "FairEmail" msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:11 +#: plinth/modules/email_server/templates/email_alias.html:13 +#: plinth/modules/email_server/templates/email_server.html:24 #, fuzzy #| msgid "Manage Libraries" msgid "Manage Aliases" msgstr "管理圖書館" -#: plinth/modules/email_server/templates/email_alias.html:14 +#: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." msgstr "" -#: plinth/modules/email_server/templates/email_alias.html:23 -msgid "Disable selected" +#: plinth/modules/email_server/templates/email_alias.html:24 +msgid "Disable" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:26 -msgid "Enable selected" -msgstr "" - -#: plinth/modules/email_server/templates/email_alias.html:29 #, fuzzy -#| msgid "Delete files" -msgid "Delete selected" -msgstr "刪除檔案" +#| msgid "Enable DNSSEC" +msgid "Enable" +msgstr "啟用域名系統安全擴充 DNSSEC" -#: plinth/modules/email_server/templates/email_alias.html:33 +#: plinth/modules/email_server/templates/email_alias.html:32 #, fuzzy #| msgid "Create a new backup" msgid "Create a new email alias" msgstr "建立一個新的備份檔" -#: plinth/modules/email_server/templates/email_alias.html:40 +#: plinth/modules/email_server/templates/email_alias.html:38 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:59 msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:19 -msgid "New value" +#: plinth/modules/email_server/templates/email_server.html:16 +#: plinth/modules/email_server/views.py:199 +#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 +msgid "Domains" msgstr "" -#: plinth/modules/email_server/templates/email_domains.html:31 -#: plinth/modules/email_server/templates/email_security.html:23 -#: plinth/modules/upgrades/__init__.py:77 -#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 -#: plinth/modules/upgrades/templates/update-firstboot.html:11 -#: plinth/templates/setup.html:73 -msgid "Update" -msgstr "" +#: plinth/modules/email_server/templates/email_server.html:19 +#, fuzzy +#| msgid "Manage Libraries" +msgid "Manage Spam" +msgstr "管理圖書館" -#: plinth/modules/email_server/templates/email_form_base.html:12 -msgid "There was a problem with your request. Please try again." -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:13 -msgid "Postfix TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_security.html:18 -msgid "Dovecot TLS" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:14 -msgid "Visit Rspamd administration interface" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:18 +#: plinth/modules/email_server/templates/email_server.html:30 #, fuzzy #| msgid "Service Discovery" msgid "Service Alert" msgstr "發現服務" -#: plinth/modules/email_server/templates/email_server.html:38 +#: plinth/modules/email_server/templates/email_server.html:50 msgid "Repair" msgstr "" -#: plinth/modules/email_server/templates/my_mail.html:15 -msgid "You do not have a home directory." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:17 -msgid "Create one to begin receiving emails." -msgstr "" - -#: plinth/modules/email_server/templates/my_mail.html:22 -#, fuzzy -#| msgid "Create Repository" -msgid "Create home directory" -msgstr "建立儲存庫" - -#: plinth/modules/email_server/templates/my_mail.html:27 -msgid "Your home directory is ready to receive emails." -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:10 -msgid "Keep current settings" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:19 -msgid "Use Let's Encrypt" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:24 -msgid "Common name" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:38 -msgid "Use custom values" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:43 -msgid "Certificate path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:53 -msgid "Private key path" -msgstr "" - -#: plinth/modules/email_server/templates/tls_form.html:67 -msgid "Use system default" -msgstr "" - -#: plinth/modules/email_server/views.py:22 -#: plinth/modules/email_server/views.py:30 plinth/templates/base.html:110 -msgid "Home" -msgstr "" - -#: plinth/modules/email_server/views.py:23 -msgid "My Mail" -msgstr "" - -#: plinth/modules/email_server/views.py:24 -#: plinth/modules/email_server/views.py:31 -msgid "My Aliases" -msgstr "" - -#: plinth/modules/email_server/views.py:25 -#: plinth/modules/networks/templates/connection_show.html:259 -#: plinth/modules/security/__init__.py:45 -msgid "Security" -msgstr "" - -#: plinth/modules/email_server/views.py:26 -#: plinth/modules/monkeysphere/templates/monkeysphere.html:37 -msgid "Domains" -msgstr "" - -#: plinth/modules/email_server/views.py:102 +#: plinth/modules/email_server/views.py:64 #, python-brace-format msgid "Internal error in {0}" msgstr "" -#: plinth/modules/email_server/views.py:105 +#: plinth/modules/email_server/views.py:67 msgid "Check syslog for more information" msgstr "" -#: plinth/modules/email_server/views.py:180 -msgid "Enabled aliases" +#: plinth/modules/email_server/views.py:217 +#, fuzzy +#| msgid "An error occurred during configuration." +msgid "Error updating configuration" +msgstr "設置過程中發生錯誤。" + +#: plinth/modules/email_server/views.py:219 plinth/modules/tor/views.py:137 +#: plinth/views.py:219 +msgid "Setting unchanged" msgstr "" -#: plinth/modules/email_server/views.py:181 -msgid "Disabled aliases" -msgstr "" - -#: plinth/modules/firewall/__init__.py:33 +#: plinth/modules/firewall/__init__.py:34 #, python-brace-format msgid "" "Firewall is a security system that controls the incoming and outgoing " @@ -2147,7 +2073,7 @@ msgid "" "configured reduces risk of security threat from the Internet." msgstr "" -#: plinth/modules/firewall/__init__.py:66 +#: plinth/modules/firewall/__init__.py:68 msgid "Firewall" msgstr "" @@ -2179,19 +2105,6 @@ msgstr "" msgid "Service/Port" msgstr "" -#: plinth/modules/firewall/templates/firewall.html:54 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 -msgid "Enabled" -msgstr "" - -#: plinth/modules/firewall/templates/firewall.html:57 -#: plinth/modules/letsencrypt/templates/letsencrypt.html:71 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 -#: plinth/templates/cards.html:34 -msgid "Disabled" -msgstr "" - #: plinth/modules/firewall/templates/firewall.html:72 msgid "Permitted" msgstr "" @@ -2267,7 +2180,7 @@ msgstr "" msgid "Setup Complete" msgstr "" -#: plinth/modules/gitweb/__init__.py:29 +#: plinth/modules/gitweb/__init__.py:30 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -2278,21 +2191,21 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:36 +#: plinth/modules/gitweb/__init__.py:37 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:52 +#: plinth/modules/gitweb/__init__.py:53 msgid "Read-write access to Git repositories" msgstr "" -#: plinth/modules/gitweb/__init__.py:57 plinth/modules/gitweb/manifest.py:10 +#: plinth/modules/gitweb/__init__.py:58 plinth/modules/gitweb/manifest.py:10 msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:58 +#: plinth/modules/gitweb/__init__.py:59 msgid "Simple Git Hosting" msgstr "" @@ -2653,7 +2566,7 @@ msgstr "" msgid "{box_name} Manual" msgstr "" -#: plinth/modules/i2p/__init__.py:29 +#: plinth/modules/i2p/__init__.py:30 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2661,31 +2574,31 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:33 +#: plinth/modules/i2p/__init__.py:34 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:35 +#: plinth/modules/i2p/__init__.py:36 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:57 +#: plinth/modules/i2p/__init__.py:58 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:60 plinth/modules/i2p/manifest.py:13 +#: plinth/modules/i2p/__init__.py:61 plinth/modules/i2p/manifest.py:13 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:61 plinth/modules/tor/__init__.py:56 +#: plinth/modules/i2p/__init__.py:62 plinth/modules/tor/__init__.py:58 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:84 +#: plinth/modules/i2p/__init__.py:88 msgid "I2P Proxy" msgstr "" @@ -2722,14 +2635,14 @@ msgid "" "a file." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:28 +#: plinth/modules/ikiwiki/__init__.py:29 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:32 +#: plinth/modules/ikiwiki/__init__.py:33 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2738,15 +2651,15 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:53 plinth/modules/ikiwiki/manifest.py:6 +#: plinth/modules/ikiwiki/__init__.py:54 plinth/modules/ikiwiki/manifest.py:6 msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:54 +#: plinth/modules/ikiwiki/__init__.py:55 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:75 +#: plinth/modules/ikiwiki/__init__.py:79 msgid "View and edit wiki applications" msgstr "" @@ -2823,11 +2736,11 @@ msgstr "" msgid "Could not delete {title}: {error}" msgstr "" -#: plinth/modules/infinoted/__init__.py:26 +#: plinth/modules/infinoted/__init__.py:27 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:28 +#: plinth/modules/infinoted/__init__.py:29 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2835,11 +2748,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:46 +#: plinth/modules/infinoted/__init__.py:48 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "Gobby Server" msgstr "" @@ -2858,17 +2771,17 @@ msgid "" "domain name." msgstr "" -#: plinth/modules/jsxc/__init__.py:24 +#: plinth/modules/jsxc/__init__.py:25 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -#: plinth/modules/jsxc/__init__.py:44 plinth/modules/jsxc/manifest.py:7 +#: plinth/modules/jsxc/__init__.py:46 plinth/modules/jsxc/manifest.py:7 msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:45 +#: plinth/modules/jsxc/__init__.py:47 msgid "Chat Client" msgstr "" @@ -2877,7 +2790,7 @@ msgstr "" msgid "JavaScript license information" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:35 +#: plinth/modules/letsencrypt/__init__.py:36 #, python-brace-format msgid "" "A digital certificate allows users of a web service to verify the identity " @@ -2887,7 +2800,7 @@ msgid "" "Encrypt, a certificate authority (CA)." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:41 +#: plinth/modules/letsencrypt/__init__.py:42 msgid "" "Let's Encrypt is a free, automated, and open certificate authority, run for " "the public's benefit by the Internet Security Research Group (ISRG). Please " @@ -2895,15 +2808,15 @@ msgid "" "\">Let's Encrypt Subscriber Agreement before using this service." msgstr "" -#: plinth/modules/letsencrypt/__init__.py:65 +#: plinth/modules/letsencrypt/__init__.py:67 msgid "Let's Encrypt" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:66 +#: plinth/modules/letsencrypt/__init__.py:68 msgid "Certificates" msgstr "" -#: plinth/modules/letsencrypt/__init__.py:96 +#: plinth/modules/letsencrypt/__init__.py:101 msgid "Cannot test: No domains are configured." msgstr "" @@ -3004,7 +2917,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:37 +#: plinth/modules/matrixsynapse/__init__.py:38 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -3014,14 +2927,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:45 +#: plinth/modules/matrixsynapse/__init__.py:46 #, python-brace-format msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:76 +#: plinth/modules/matrixsynapse/__init__.py:78 msgid "Matrix Synapse" msgstr "" @@ -3092,7 +3005,7 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/mediawiki/__init__.py:28 +#: plinth/modules/mediawiki/__init__.py:29 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -3100,7 +3013,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:32 +#: plinth/modules/mediawiki/__init__.py:33 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -3109,18 +3022,18 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:38 +#: plinth/modules/mediawiki/__init__.py:39 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -#: plinth/modules/mediawiki/__init__.py:59 +#: plinth/modules/mediawiki/__init__.py:60 #: plinth/modules/mediawiki/manifest.py:6 msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:60 plinth/templates/index.html:132 +#: plinth/modules/mediawiki/__init__.py:61 plinth/templates/index.html:132 msgid "Wiki" msgstr "" @@ -3202,7 +3115,7 @@ msgstr "" msgid "Server URL updated" msgstr "" -#: plinth/modules/minetest/__init__.py:39 +#: plinth/modules/minetest/__init__.py:40 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -3211,11 +3124,11 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:61 plinth/modules/minetest/manifest.py:9 +#: plinth/modules/minetest/__init__.py:63 plinth/modules/minetest/manifest.py:9 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:64 msgid "Block Sandbox" msgstr "" @@ -3281,7 +3194,7 @@ msgstr "" msgid "Damage configuration updated" msgstr "" -#: plinth/modules/minidlna/__init__.py:25 +#: plinth/modules/minidlna/__init__.py:26 msgid "" "MiniDLNA is a simple media server software, with the aim of being fully " "compliant with DLNA/UPnP-AV clients. The MiniDLNA daemon serves media files " @@ -3292,15 +3205,15 @@ msgid "" "Kodi." msgstr "" -#: plinth/modules/minidlna/__init__.py:46 +#: plinth/modules/minidlna/__init__.py:47 msgid "Media streaming server" msgstr "" -#: plinth/modules/minidlna/__init__.py:49 +#: plinth/modules/minidlna/__init__.py:50 msgid "MiniDLNA" msgstr "" -#: plinth/modules/minidlna/__init__.py:50 +#: plinth/modules/minidlna/__init__.py:51 msgid "Simple Media Server" msgstr "" @@ -3340,36 +3253,36 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:28 +#: plinth/modules/mldonkey/__init__.py:29 msgid "" "MLDonkey is a peer-to-peer file sharing application used to exchange large " "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" -#: plinth/modules/mldonkey/__init__.py:31 +#: plinth/modules/mldonkey/__init__.py:32 msgid "" "Users belonging to admin and ed2k group can control it through the web " "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" -#: plinth/modules/mldonkey/__init__.py:36 +#: plinth/modules/mldonkey/__init__.py:37 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:54 +#: plinth/modules/mldonkey/__init__.py:55 msgid "Download files using eDonkey applications" msgstr "" -#: plinth/modules/mldonkey/__init__.py:57 +#: plinth/modules/mldonkey/__init__.py:58 #: plinth/modules/mldonkey/manifest.py:11 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:59 +#: plinth/modules/mldonkey/__init__.py:60 msgid "Peer-to-peer File Sharing" msgstr "" @@ -3381,7 +3294,7 @@ msgstr "" msgid "AMLDonkey" msgstr "" -#: plinth/modules/monkeysphere/__init__.py:20 +#: plinth/modules/monkeysphere/__init__.py:21 msgid "" "With Monkeysphere, an OpenPGP key can be generated for each configured " "domain serving SSH. The OpenPGP public key can then be uploaded to the " @@ -3393,7 +3306,7 @@ msgid "" "for more details." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:28 +#: plinth/modules/monkeysphere/__init__.py:29 msgid "" "Monkeysphere can also generate an OpenPGP key for each Secure Web Server " "(HTTPS) certificate installed on this machine. The OpenPGP public key can " @@ -3404,7 +3317,7 @@ msgid "" "Monkeysphere website." msgstr "" -#: plinth/modules/monkeysphere/__init__.py:50 +#: plinth/modules/monkeysphere/__init__.py:52 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 msgid "Monkeysphere" msgstr "" @@ -3526,24 +3439,24 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:33 +#: plinth/modules/mumble/__init__.py:34 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:35 +#: plinth/modules/mumble/__init__.py:36 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:52 plinth/modules/mumble/manifest.py:9 +#: plinth/modules/mumble/__init__.py:54 plinth/modules/mumble/manifest.py:9 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:53 +#: plinth/modules/mumble/__init__.py:55 msgid "Voice Chat" msgstr "" @@ -3594,23 +3507,23 @@ msgstr "" msgid "Services" msgstr "" -#: plinth/modules/networks/__init__.py:41 +#: plinth/modules/networks/__init__.py:42 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" -#: plinth/modules/networks/__init__.py:43 +#: plinth/modules/networks/__init__.py:44 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:61 +#: plinth/modules/networks/__init__.py:63 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:179 +#: plinth/modules/networks/__init__.py:184 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" @@ -4090,6 +4003,11 @@ msgstr "" msgid "This connection is not active." msgstr "" +#: plinth/modules/networks/templates/connection_show.html:259 +#: plinth/modules/security/__init__.py:47 +msgid "Security" +msgstr "" + #: plinth/modules/networks/templates/connection_show.html:264 #: plinth/modules/networks/templates/connection_show.html:284 #: plinth/modules/networks/templates/connection_show.html:303 @@ -4527,7 +4445,7 @@ msgstr "" msgid "TUN or TAP interface" msgstr "" -#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 +#: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:51 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -4616,7 +4534,7 @@ msgstr "" msgid "Failed to delete connection: Connection not found." msgstr "" -#: plinth/modules/openvpn/__init__.py:30 +#: plinth/modules/openvpn/__init__.py:31 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -4627,20 +4545,20 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:58 +#: plinth/modules/openvpn/__init__.py:59 msgid "Connect to VPN services" msgstr "" -#: plinth/modules/openvpn/__init__.py:61 plinth/modules/openvpn/manifest.py:17 +#: plinth/modules/openvpn/__init__.py:62 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:62 -#: plinth/modules/wireguard/__init__.py:51 +#: plinth/modules/openvpn/__init__.py:63 +#: plinth/modules/wireguard/__init__.py:53 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:73 +#: plinth/modules/openvpn/__init__.py:74 #, python-brace-format msgid "" "Download Profile" @@ -4704,7 +4622,7 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/pagekite/__init__.py:28 +#: plinth/modules/pagekite/__init__.py:29 #, python-brace-format msgid "" "PageKite is a system for exposing {box_name} services when you don't have a " @@ -4713,33 +4631,33 @@ msgid "" "following situations:" msgstr "" -#: plinth/modules/pagekite/__init__.py:33 +#: plinth/modules/pagekite/__init__.py:34 #, python-brace-format msgid "{box_name} is behind a restricted firewall." msgstr "" -#: plinth/modules/pagekite/__init__.py:36 +#: plinth/modules/pagekite/__init__.py:37 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." msgstr "" -#: plinth/modules/pagekite/__init__.py:38 +#: plinth/modules/pagekite/__init__.py:39 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -#: plinth/modules/pagekite/__init__.py:40 +#: plinth/modules/pagekite/__init__.py:41 msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -#: plinth/modules/pagekite/__init__.py:42 +#: plinth/modules/pagekite/__init__.py:43 msgid "Your ISP limits incoming connections." msgstr "" -#: plinth/modules/pagekite/__init__.py:44 +#: plinth/modules/pagekite/__init__.py:45 #, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " @@ -4748,15 +4666,15 @@ msgid "" "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -#: plinth/modules/pagekite/__init__.py:65 +#: plinth/modules/pagekite/__init__.py:67 msgid "PageKite" msgstr "" -#: plinth/modules/pagekite/__init__.py:66 +#: plinth/modules/pagekite/__init__.py:68 msgid "Public Visibility" msgstr "" -#: plinth/modules/pagekite/__init__.py:76 +#: plinth/modules/pagekite/__init__.py:81 msgid "PageKite Domain" msgstr "" @@ -4890,25 +4808,25 @@ msgid "" "SshOverPageKite/\">instructions" msgstr "" -#: plinth/modules/performance/__init__.py:17 -#: plinth/modules/performance/__init__.py:46 +#: plinth/modules/performance/__init__.py:18 +#: plinth/modules/performance/__init__.py:48 msgid "Performance" msgstr "" -#: plinth/modules/performance/__init__.py:26 +#: plinth/modules/performance/__init__.py:27 msgid "" "Performance app allows you to collect, store and view information about " "utilization of the hardware. This can give you basic insights into usage " "patterns and whether the hardware is overloaded by users and services." msgstr "" -#: plinth/modules/performance/__init__.py:30 +#: plinth/modules/performance/__init__.py:31 msgid "" "Performance metrics are collected by Performance Co-Pilot and can be viewed " "using the Cockpit app." msgstr "" -#: plinth/modules/performance/__init__.py:47 +#: plinth/modules/performance/__init__.py:49 msgid "System Monitoring" msgstr "" @@ -4969,14 +4887,14 @@ msgstr "" msgid "Shut Down Now" msgstr "" -#: plinth/modules/privoxy/__init__.py:30 +#: plinth/modules/privoxy/__init__.py:31 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -#: plinth/modules/privoxy/__init__.py:35 +#: plinth/modules/privoxy/__init__.py:36 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4986,20 +4904,20 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:56 +#: plinth/modules/privoxy/__init__.py:58 msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:57 +#: plinth/modules/privoxy/__init__.py:59 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:115 +#: plinth/modules/privoxy/__init__.py:120 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" -#: plinth/modules/quassel/__init__.py:34 +#: plinth/modules/quassel/__init__.py:35 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -5010,7 +4928,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:41 +#: plinth/modules/quassel/__init__.py:42 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:60 plinth/modules/quassel/manifest.py:9 +#: plinth/modules/quassel/__init__.py:62 plinth/modules/quassel/manifest.py:9 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:61 +#: plinth/modules/quassel/__init__.py:63 msgid "IRC Client" msgstr "" @@ -5030,7 +4948,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:28 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -5040,19 +4958,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:34 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:55 +#: plinth/modules/radicale/__init__.py:57 #: plinth/modules/radicale/manifest.py:74 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "Calendar and Addressbook" msgstr "" @@ -5119,7 +5037,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:23 +#: plinth/modules/roundcube/__init__.py:24 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5127,7 +5045,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:28 +#: plinth/modules/roundcube/__init__.py:29 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5136,7 +5054,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:33 +#: plinth/modules/roundcube/__init__.py:34 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5146,17 +5064,17 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:56 +#: plinth/modules/roundcube/__init__.py:58 msgid "Email Client" msgstr "" -#: plinth/modules/samba/__init__.py:32 +#: plinth/modules/samba/__init__.py:33 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:35 +#: plinth/modules/samba/__init__.py:36 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -5165,31 +5083,31 @@ msgid "" "There are three types of shares you can choose from: " msgstr "" -#: plinth/modules/samba/__init__.py:40 +#: plinth/modules/samba/__init__.py:41 msgid "Open share - accessible to everyone in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:41 +#: plinth/modules/samba/__init__.py:42 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" -#: plinth/modules/samba/__init__.py:43 +#: plinth/modules/samba/__init__.py:44 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" -#: plinth/modules/samba/__init__.py:59 +#: plinth/modules/samba/__init__.py:60 msgid "Access to the private shares" msgstr "" -#: plinth/modules/samba/__init__.py:62 +#: plinth/modules/samba/__init__.py:63 msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:63 +#: plinth/modules/samba/__init__.py:64 msgid "Network File Storage" msgstr "" @@ -5297,27 +5215,27 @@ msgstr "" msgid "Error disabling share: {error_message}" msgstr "" -#: plinth/modules/searx/__init__.py:25 +#: plinth/modules/searx/__init__.py:26 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:27 +#: plinth/modules/searx/__init__.py:28 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:46 msgid "Search the web" msgstr "" -#: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:6 +#: plinth/modules/searx/__init__.py:49 plinth/modules/searx/manifest.py:6 msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:49 +#: plinth/modules/searx/__init__.py:50 msgid "Web Search" msgstr "" @@ -5472,32 +5390,32 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:20 +#: plinth/modules/shaarli/__init__.py:21 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:21 +#: plinth/modules/shaarli/__init__.py:22 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:39 plinth/modules/shaarli/manifest.py:6 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:40 msgid "Bookmarks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:26 +#: plinth/modules/shadowsocks/__init__.py:27 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:30 +#: plinth/modules/shadowsocks/__init__.py:31 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -5506,17 +5424,17 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:35 +#: plinth/modules/shadowsocks/__init__.py:36 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:51 +#: plinth/modules/shadowsocks/__init__.py:53 msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "Socks5 Proxy" msgstr "" @@ -5645,14 +5563,14 @@ msgstr "" msgid "Share deleted." msgstr "" -#: plinth/modules/snapshot/__init__.py:27 +#: plinth/modules/snapshot/__init__.py:28 msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -#: plinth/modules/snapshot/__init__.py:31 +#: plinth/modules/snapshot/__init__.py:32 #, no-python-format msgid "" "Snapshots are taken periodically (called timeline snapshots) and also before " @@ -5660,14 +5578,14 @@ msgid "" "cleaned up according to the settings below." msgstr "" -#: plinth/modules/snapshot/__init__.py:34 +#: plinth/modules/snapshot/__init__.py:35 msgid "" "Snapshots currently work on btrfs file systems only and on the root " "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" -#: plinth/modules/snapshot/__init__.py:56 +#: plinth/modules/snapshot/__init__.py:58 msgid "Storage Snapshots" msgstr "" @@ -5857,7 +5775,7 @@ msgstr "" msgid "Rollback to Snapshot" msgstr "" -#: plinth/modules/ssh/__init__.py:30 +#: plinth/modules/ssh/__init__.py:31 msgid "" "A Secure Shell server uses the secure shell protocol to accept connections " "from remote computers. An authorized remote computer can perform " @@ -5865,7 +5783,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:49 +#: plinth/modules/ssh/__init__.py:51 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5906,7 +5824,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:34 +#: plinth/modules/sso/__init__.py:36 msgid "Single Sign On" msgstr "" @@ -5914,7 +5832,7 @@ msgstr "" msgid "Login" msgstr "" -#: plinth/modules/storage/__init__.py:29 +#: plinth/modules/storage/__init__.py:30 #, python-brace-format msgid "" "This module allows you to manage storage media attached to your {box_name}. " @@ -5922,104 +5840,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:316 -#: plinth/modules/storage/__init__.py:347 +#: plinth/modules/storage/__init__.py:55 plinth/modules/storage/__init__.py:321 +#: plinth/modules/storage/__init__.py:352 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:210 +#: plinth/modules/storage/__init__.py:215 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:214 +#: plinth/modules/storage/__init__.py:219 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:218 +#: plinth/modules/storage/__init__.py:223 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:222 +#: plinth/modules/storage/__init__.py:227 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:230 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:242 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:244 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:246 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:248 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:251 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:253 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:256 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:258 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:255 -#: plinth/modules/storage/__init__.py:257 -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 +#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:264 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:266 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:268 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:265 +#: plinth/modules/storage/__init__.py:270 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:267 +#: plinth/modules/storage/__init__.py:272 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:311 +#: plinth/modules/storage/__init__.py:316 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:313 +#: plinth/modules/storage/__init__.py:318 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:341 +#: plinth/modules/storage/__init__.py:346 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:343 +#: plinth/modules/storage/__init__.py:348 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6133,7 +6051,7 @@ msgstr "" msgid "Error ejecting device: {error_message}" msgstr "" -#: plinth/modules/syncthing/__init__.py:28 +#: plinth/modules/syncthing/__init__.py:29 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -6141,7 +6059,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:33 +#: plinth/modules/syncthing/__init__.py:34 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -6153,20 +6071,20 @@ msgid "" "\"syncthing-access\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:58 +#: plinth/modules/syncthing/__init__.py:59 msgid "Administer Syncthing application" msgstr "" -#: plinth/modules/syncthing/__init__.py:62 +#: plinth/modules/syncthing/__init__.py:63 #: plinth/modules/syncthing/manifest.py:12 msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:63 +#: plinth/modules/syncthing/__init__.py:64 msgid "File Synchronization" msgstr "" -#: plinth/modules/tahoe/__init__.py:31 +#: plinth/modules/tahoe/__init__.py:32 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -6174,7 +6092,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:36 +#: plinth/modules/tahoe/__init__.py:37 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -6182,11 +6100,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:62 +#: plinth/modules/tahoe/__init__.py:64 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:64 +#: plinth/modules/tahoe/__init__.py:66 msgid "Distributed File Storage" msgstr "" @@ -6221,7 +6139,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:35 +#: plinth/modules/tor/__init__.py:36 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6230,40 +6148,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:55 +#: plinth/modules/tor/__init__.py:57 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:67 +#: plinth/modules/tor/__init__.py:72 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:71 +#: plinth/modules/tor/__init__.py:76 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:75 +#: plinth/modules/tor/__init__.py:80 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:116 +#: plinth/modules/tor/__init__.py:121 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:126 +#: plinth/modules/tor/__init__.py:131 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:136 +#: plinth/modules/tor/__init__.py:141 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:205 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:216 +#: plinth/modules/tor/__init__.py:221 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6389,58 +6307,54 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:221 -msgid "Setting unchanged" -msgstr "" - -#: plinth/modules/transmission/__init__.py:29 +#: plinth/modules/transmission/__init__.py:30 msgid "Transmission is a BitTorrent client with a web interface." msgstr "" -#: plinth/modules/transmission/__init__.py:30 +#: plinth/modules/transmission/__init__.py:31 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Note that BitTorrent is " "not anonymous." msgstr "" -#: plinth/modules/transmission/__init__.py:32 +#: plinth/modules/transmission/__init__.py:33 msgid "Please do not change the default port of the transmission daemon." msgstr "" -#: plinth/modules/transmission/__init__.py:53 +#: plinth/modules/transmission/__init__.py:55 #: plinth/modules/transmission/manifest.py:6 msgid "Transmission" msgstr "" -#: plinth/modules/ttrss/__init__.py:30 +#: plinth/modules/ttrss/__init__.py:31 msgid "" "Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to " "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -#: plinth/modules/ttrss/__init__.py:34 +#: plinth/modules/ttrss/__init__.py:35 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -#: plinth/modules/ttrss/__init__.py:38 +#: plinth/modules/ttrss/__init__.py:39 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -#: plinth/modules/ttrss/__init__.py:54 +#: plinth/modules/ttrss/__init__.py:55 msgid "Read and subscribe to news feeds" msgstr "" -#: plinth/modules/ttrss/__init__.py:57 plinth/modules/ttrss/manifest.py:18 +#: plinth/modules/ttrss/__init__.py:58 plinth/modules/ttrss/manifest.py:18 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:58 +#: plinth/modules/ttrss/__init__.py:59 msgid "News Feed Reader" msgstr "" @@ -6448,12 +6362,12 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:45 +#: plinth/modules/upgrades/__init__.py:46 #: plinth/modules/upgrades/templates/update-firstboot.html:14 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:46 +#: plinth/modules/upgrades/__init__.py:47 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6461,30 +6375,37 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:122 +#: plinth/modules/upgrades/__init__.py:79 +#: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 +#: plinth/modules/upgrades/templates/update-firstboot.html:11 +#: plinth/templates/setup.html:73 +msgid "Update" +msgstr "" + +#: plinth/modules/upgrades/__init__.py:127 msgid "Updates" msgstr "" -#: plinth/modules/upgrades/__init__.py:125 +#: plinth/modules/upgrades/__init__.py:130 msgid "FreedomBox Updated" msgstr "" -#: plinth/modules/upgrades/__init__.py:210 +#: plinth/modules/upgrades/__init__.py:215 msgid "Could not start distribution update" msgstr "" -#: plinth/modules/upgrades/__init__.py:212 +#: plinth/modules/upgrades/__init__.py:217 msgid "" "There is not enough free space in the root partition to start the " "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" -#: plinth/modules/upgrades/__init__.py:223 +#: plinth/modules/upgrades/__init__.py:228 msgid "Distribution update started" msgstr "" -#: plinth/modules/upgrades/__init__.py:225 +#: plinth/modules/upgrades/__init__.py:230 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" @@ -6650,14 +6571,14 @@ msgstr "" msgid "Frequent feature updates activated." msgstr "" -#: plinth/modules/users/__init__.py:39 +#: plinth/modules/users/__init__.py:40 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" -#: plinth/modules/users/__init__.py:44 +#: plinth/modules/users/__init__.py:45 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6665,15 +6586,15 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:65 +#: plinth/modules/users/__init__.py:67 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:78 +#: plinth/modules/users/__init__.py:83 msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:114 +#: plinth/modules/users/__init__.py:119 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6899,18 +6820,18 @@ msgstr "" msgid "Password changed successfully." msgstr "" -#: plinth/modules/wireguard/__init__.py:23 +#: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." msgstr "" -#: plinth/modules/wireguard/__init__.py:25 +#: plinth/modules/wireguard/__init__.py:26 #, python-brace-format msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" -#: plinth/modules/wireguard/__init__.py:29 +#: plinth/modules/wireguard/__init__.py:30 #, python-brace-format msgid "" "A second use case is to connect a mobile device to {box_name} while " @@ -7204,7 +7125,7 @@ msgstr "" msgid "Server deleted." msgstr "" -#: plinth/modules/wordpress/__init__.py:37 +#: plinth/modules/wordpress/__init__.py:38 msgid "" "WordPress is a popular way to create and manage websites and blogs. Content " "can be managed using a visual interface. Layout and functionality of the web " @@ -7213,7 +7134,7 @@ msgid "" "devices." msgstr "" -#: plinth/modules/wordpress/__init__.py:43 +#: plinth/modules/wordpress/__init__.py:44 #, python-brace-format msgid "" "You need to run WordPress setup by visiting the app before making the site " @@ -7222,26 +7143,26 @@ msgid "" "better URLs to your pages and posts." msgstr "" -#: plinth/modules/wordpress/__init__.py:48 +#: plinth/modules/wordpress/__init__.py:49 msgid "" "WordPress has its own user accounts. First administrator account is created " "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" -#: plinth/modules/wordpress/__init__.py:52 +#: plinth/modules/wordpress/__init__.py:53 msgid "" "After a major version upgrade, you need to manually run database upgrade " "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" -#: plinth/modules/wordpress/__init__.py:70 +#: plinth/modules/wordpress/__init__.py:71 #: plinth/modules/wordpress/manifest.py:6 msgid "WordPress" msgstr "" -#: plinth/modules/wordpress/__init__.py:71 +#: plinth/modules/wordpress/__init__.py:72 msgid "Website and Blog" msgstr "" @@ -7255,7 +7176,7 @@ msgid "" "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" -#: plinth/modules/zoph/__init__.py:33 +#: plinth/modules/zoph/__init__.py:34 #, python-brace-format msgid "" "Zoph manages your photo collection. Photos are stored on your {box_name}, " @@ -7268,7 +7189,7 @@ msgid "" "shared with others by sending a direct link." msgstr "" -#: plinth/modules/zoph/__init__.py:44 +#: plinth/modules/zoph/__init__.py:45 #, python-brace-format msgid "" "The {box_name} user who setup Zoph will also become the administrator in " @@ -7276,11 +7197,11 @@ msgid "" "in Zoph with the same user name." msgstr "" -#: plinth/modules/zoph/__init__.py:62 plinth/modules/zoph/manifest.py:6 +#: plinth/modules/zoph/__init__.py:64 plinth/modules/zoph/manifest.py:6 msgid "Zoph" msgstr "" -#: plinth/modules/zoph/__init__.py:63 +#: plinth/modules/zoph/__init__.py:65 msgid "Photo Organizer" msgstr "" @@ -7314,23 +7235,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:165 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:187 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:189 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:191 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:193 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7391,6 +7312,10 @@ msgstr "" msgid " Home" msgstr "" +#: plinth/templates/base.html:110 +msgid "Home" +msgstr "" + #: plinth/templates/base.html:115 msgid " Apps" msgstr "" @@ -7662,3 +7587,13 @@ msgstr "" #: plinth/web_framework.py:117 msgid "Gujarati" msgstr "" + +#, fuzzy +#~| msgid "Delete files" +#~ msgid "Delete selected" +#~ msgstr "刪除檔案" + +#, fuzzy +#~| msgid "Create Repository" +#~ msgid "Create home directory" +#~ msgstr "建立儲存庫" From eda492405a3735c40cae6f6bbe71e5c1cedf3f20 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 8 Nov 2021 21:33:58 -0500 Subject: [PATCH 73/74] doc: Fetch latest manual Signed-off-by: James Valleroy --- doc/manual/en/Backups.raw.wiki | 66 ++++++----------------------- doc/manual/en/Calibre.raw.wiki | 3 -- doc/manual/en/MLDonkey.raw.wiki | 2 +- doc/manual/en/Plinth.raw.wiki | 2 +- doc/manual/en/Radicale.raw.wiki | 40 ----------------- doc/manual/en/ReleaseNotes.raw.wiki | 21 +++++++++ doc/manual/en/WireGuard.raw.wiki | 5 +-- doc/manual/es/Backups.raw.wiki | 66 ++++++----------------------- doc/manual/es/Calibre.raw.wiki | 3 -- doc/manual/es/MLDonkey.raw.wiki | 3 +- doc/manual/es/Plinth.raw.wiki | 4 +- doc/manual/es/Radicale.raw.wiki | 39 ----------------- doc/manual/es/ReleaseNotes.raw.wiki | 21 +++++++++ doc/manual/es/WireGuard.raw.wiki | 5 +-- 14 files changed, 73 insertions(+), 207 deletions(-) diff --git a/doc/manual/en/Backups.raw.wiki b/doc/manual/en/Backups.raw.wiki index 2d845576e..0398aab05 100644 --- a/doc/manual/en/Backups.raw.wiki +++ b/doc/manual/en/Backups.raw.wiki @@ -10,62 +10,20 @@ !FreedomBox includes the ability to backup and restore data, preferences, configuration and secrets from most of the applications. The Backups feature is built using Borg backup software. Borg is a deduplicating and compressing backup program. It is designed for efficient and secure backups. This backups feature can be used to selectively backup and restore data on an app-by-app basis. Backed up data can be stored on the !FreedomBox machine itself or on a remote server. Any remote server providing SSH access can be used as a backup storage repository for !FreedomBox backups. Data stored remotely may be encrypted and in such cases remote server cannot access your decrypted data. +=== Notes for Specific App Backups === -=== Status of Backups Feature === +Unless otherwise noted here, backup of an app's data will include its configuration, secrets and other data. -|| '''App/Feature''' || '''Support in Version''' || '''Notes''' || -|| Avahi || - || no backup needed || -|| Backups || - || no backup needed || -|| bepasty || 20.14 || || -|| Bind || 0.41 || || -|| calibre || 20.15 || || -|| Cockpit || - || no backup needed || -|| Coturn || 20.8 || || -|| Datetime || 0.41 || || -|| Deluge || 0.41 || does not include downloaded/seeding files || -|| Diagnostics || - || no backup needed || -|| Dynamic DNS || 0.39 || || -|| ejabberd || 0.39 || includes all data and configuration || -|| Firewall || - || no backup needed || -|| Gitweb || 19.19 || || -|| I2P || 19.6 || || -|| ikiwiki || 0.39 || includes all wikis/blogs and their content || -|| infinoted || 0.39 || includes all data and keys || -|| JSXC || - || no backup needed || -|| Let's Encrypt || 0.42 || || -|| Matrix Synapse || 0.39 || includes media and uploads || -|| !MediaWiki || 0.39 || includes wiki pages and uploaded files || -|| Minetest || 0.39 || || -|| MiniDLNA || 19.23 || || -|| MLDonkey || 19.0 || || -|| Monkeysphere || 0.42 || || -|| Mumble || 0.40 || || -|| Names || - || no backup needed || -|| Networks || No || No plans currently to implement backup || -|| OpenVPN || 0.48 || includes all user and server keys || -|| Pagekite || 0.40 || || -|| Power || - || no backup needed || -|| Privoxy || - || no backup needed || -|| Quassel || 0.40 || includes users and logs || -|| Radicale || 0.39 || includes calendar and cards data for all users || -|| Roundcube || - || no backup needed || -|| Samba || 19.22 || does not include the data in the shared folders || -|| SearX || - || no backup needed || -|| Secure Shell (SSH) Server || 0.41 || includes host keys || -|| Security || 0.41 || || -|| Shadowsocks || 0.40 || only secrets || -|| Sharing || 0.40 || does not include the data in the shared folders || -|| Snapshot || 0.41 || only configuration, does not include snapshot data || -|| Storage || - || no backup needed || -|| Syncthing || 0.48 || does not include data in the shared folders || -|| Tahoe-LAFS || 0.42 || includes all data and configuration || -|| Tiny Tiny RSS || 19.2 || includes database containing feeds, stories, etc. || -|| Tor || 0.42 || includes configuration and secrets such as onion service keys || -|| Transmission || 0.40 || does not include downloaded/seeding files || -|| Upgrades || 0.42 || || -|| Users || No || No plans currently to implement backup || -|| Wordpress || 21.8 || || -|| Zoph || 21.3 || || +|| '''App/Feature''' || '''Notes''' || +|| [[FreedomBox/Manual/Deluge|Deluge]] || Does not include downloaded/seeding files || +|| [[FreedomBox/Manual/MiniDLNA|MiniDLNA]] || Does not include the data in the shared folders || +|| [[FreedomBox/Manual/Networks|Networks]] || No plans currently to implement backup || +|| [[FreedomBox/Manual/Samba|Samba]] || Does not include the data in the shared folders || +|| [[FreedomBox/Manual/Sharing|Sharing]] || Does not include the data in the shared folders || +|| Snapshot || Only configuration, does not include snapshot data || +|| [[FreedomBox/Manual/Syncthing|Syncthing]] || Does not include data in the shared folders || +|| [[FreedomBox/Manual/Transmission|Transmission]] || Does not include downloaded/seeding files || +|| [[FreedomBox/Manual/Users|Users]] || Backup of user accounts is [[https://salsa.debian.org/freedombox-team/freedombox/-/issues/2051|planned]] || === How to install and use Backups === diff --git a/doc/manual/en/Calibre.raw.wiki b/doc/manual/en/Calibre.raw.wiki index 7625e2983..835510057 100644 --- a/doc/manual/en/Calibre.raw.wiki +++ b/doc/manual/en/Calibre.raw.wiki @@ -21,9 +21,6 @@ Only users who are members of the ''calibre'' group have access to the libraries You might be familiar with the e-book reader shipped with the calibre application on your desktop. The server version of calibre that's installed on your !FreedomBox has a web-based e-book reader with similar look and feel. This allows you to read your e-books from any device with a web browser. -'''Note on calibre versions:''' -Please note that depending on the Debian version your !FreedomBox is running, you might be running a different major version of calibre. Debian stable (Buster) has calibre 3.x, testing and unstable have calibre 5.x. This means that some of the experimental features like the web-based e-book reader might not work very well if you're on Debian stable. This situation will improve will the Debian 11 (Bullseye) release next year. !FreedomBox doesn't ship backported packages of calibre. - === Managing Libraries === After installation of calibre, a default library called "Library" will be made available. The !FreedomBox administrator can add or delete any of the libraries including the default one from the app settings in !FreedomBox web interface. diff --git a/doc/manual/en/MLDonkey.raw.wiki b/doc/manual/en/MLDonkey.raw.wiki index 65411beb7..efc96e823 100644 --- a/doc/manual/en/MLDonkey.raw.wiki +++ b/doc/manual/en/MLDonkey.raw.wiki @@ -12,7 +12,7 @@ == MLDonkey (Peer-to-peer File Sharing) == || {{attachment:MLDonkey-icon_en_V01.png|MLDonkey icon}} || -'''Available since:''' version 0.48.0 +'''Availability:''' MLDonkey is not available in either Bullseye (stable) or Bookworm (testing). === What is MLDonkey? === diff --git a/doc/manual/en/Plinth.raw.wiki b/doc/manual/en/Plinth.raw.wiki index e3b11042f..d74b5b4ce 100644 --- a/doc/manual/en/Plinth.raw.wiki +++ b/doc/manual/en/Plinth.raw.wiki @@ -8,7 +8,7 @@ * !FreedomBox Service comes installed with all !FreedomBox images. You can [[FreedomBox/Download|download]] !FreedomBox images and run on any of the supported hardware. Then, to access !FreedomBox interface see [[FreedomBox/Manual/QuickStart|quick start]] instructions. - * If you are on a Debian box, you may install !FreedomBox Service from Debian package archive. Currently, only Buster (stable), Bullseye (testing), and Sid (unstable) are supported. To install !FreedomBox Service run: + * If you are on a Debian box, you may install !FreedomBox Service from Debian package archive. Currently, only bullseye (stable), bookworm (testing), and sid (unstable) are supported. To install !FreedomBox Service run: {{{ $ sudo apt-get install freedombox diff --git a/doc/manual/en/Radicale.raw.wiki b/doc/manual/en/Radicale.raw.wiki index d6756eeeb..6f0b5bf28 100644 --- a/doc/manual/en/Radicale.raw.wiki +++ b/doc/manual/en/Radicale.raw.wiki @@ -139,46 +139,6 @@ file = /etc/radicale/rights ==== Importing files ==== If you are using a contacts file exported from another service or application, it should be copied to: /var/lib/radicale/collections/''user''/''contact file name''.vcf. -=== Migrating from Radicale Version 1.x to Version 2.x === - -During the month of February 2019, radicale in Debian testing was upgraded from version 1.x to version 2.x. Version 2.x is a better version but is incompatible with data and configuration used with 1.x. Automatic upgrade mechanism in !FreedomBox, handled by unattended-upgrades does not automatically upgrade radicale to version 2.x due to changes in configuration files. However, !FreedomBox version 19.1, which is available on February 23rd, 2019 in testing will perform data and configuration migration to radicale version 2.x. Typical users require no action, this will happen automatically. - -If for some reason, you need to manually run `apt dist-upgrade` on your machine, then radicale will be upgraded to 2.x and then !FreedomBox will not be able to perform its upgrade (due to upstream project deciding to remove migration tools in radicale 2.x version). To avoid this situation, the following process is recommended if you wish to perform an upgrade. - -{{{ -sudo su - -apt hold radicale -apt dist-upgrade -apt unhold radicale -}}} - -However, if you already happen to perform an upgrade to radicale 2.x without help from !FreedomBox, you need to perform data and configuration migration yourself. Follow this procedure: - -{{{ -sudo su - -tar -cvzf /root/radicale_backup.tgz /var/lib/radicale/ /etc/radicale/ /etc/default/radicale -apt install -y python-radicale -python -m radicale --export-storage=/root/radicale-migration -cp -dpR /root/radicale-migration/collection-root /var/lib/radicale/collections/collection-root/ -(remove this directory if it already exists. Or perhaps merge the contents.) -chown -R radicale:radicale /var/lib/radicale/collections/collection-root/ -apt remove -y python-radicale -if [ -f /etc/radicale/config.dpkg-dist ] ; then cp /etc/radicale/config.dpkg-dist /etc/radicale/config ; fi -if [ -f /etc/default/radicale.dpkg-dist ] ; then cp /etc/default/radicale.dpkg-dist /etc/default/radicale ; fi -(After FreedomBox 19.1 is available, goto FreedomBox web interface and set your preference for calendar sharing again, if it is not the default option, as it will have been lost.) -}}} - -Notes: - * python-radicale is an old package from radicale 1.x version that is still available in testing. This is a hack to use the `--export-storage` feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. - * Files ending with .dpkg-dist will exist only if you have chosen 'Keep your currently-installed version' when prompted for configuration file override during radicale 2.x upgrade. The above process will overwrite the old configuration with new fresh configuration. No changes are necessary to the two configuration files unless you have changed the setting for sharing calendars. - * Note that during the migration, your data is safe in /var/lib/radicale/collections directory. New data will be created and used in /var/lib/radicale/collections/collections-root/ directory. - * The tar command takes a backup your configuration and data in /root/radicale_backup.tgz in case you do something goes wrong and you want to undo the changes. - -=== Troubleshooting === - -1. If you are using !FreedomBox Pioneer Edition or installing !FreedomBox on Debian Buster, then radicale may not be usable immediately after installation. This is due to a bug which has been fixed later. To overcome the problem, upgrade !FreedomBox by clicking on 'Manual Update' from 'Updates' app. Otherwise, simply wait a day or two and let !FreedomBox upgrade itself. After that install radicale. If radicale is already installed, disable and re-enable it after the update is completed. This will fix the problem and get radicale working properly. - - === External links === * Website: https://radicale.org/3.0.html diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki index 7db076949..4c9b99735 100644 --- a/doc/manual/en/ReleaseNotes.raw.wiki +++ b/doc/manual/en/ReleaseNotes.raw.wiki @@ -10,6 +10,27 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 21.13 (2021-11-08) == + +=== Highlights === + + * avahi, samba: Use systemd sandboxing + * components: Introduce new component - Packages + * security: Properly handle sandbox analysis of timer units + +=== Other Changes === + + * email_server (not enabled yet): + * Add buttons for managing aliases, domains, spam + * Authenticate using PAM instead of LDAP + * Delivery mail to /var/mail instead of home directory + * Don't use user IDs when performing lookups + * Drop hash DB and use sqlite3 directly + * Use Django forms and views + * locale: Update translations for German, Swedish, Turkish, Ukrainian + * tests: Use !BaseAppTests for functional tests of most apps + * utils: Fix ruamel.yaml deprecation warnings + == FreedomBox 21.12 (2021-10-25) == * locale: Update translations for Bulgarian, Czech, French, German, Turkish, Ukrainian diff --git a/doc/manual/en/WireGuard.raw.wiki b/doc/manual/en/WireGuard.raw.wiki index 1ffc0415e..5f08b9085 100644 --- a/doc/manual/en/WireGuard.raw.wiki +++ b/doc/manual/en/WireGuard.raw.wiki @@ -19,10 +19,7 @@ === Installation === -On [[DebianBuster]], wireguard is available from [[Backports]]. If your sources list contains the backports stanza, you can install wireguard from the Apps section of !FreedomBox web interface. -{{{#!wiki caution - WireGuard cannot be installed in !FreedomBox on buster-backports yet, because a newer version of NetworkManager is required by the !FreedomBox service to complete the setup. -}}} +You can install wireguard from the Apps section of the !FreedomBox web interface. === Configuration - Debian Peers === diff --git a/doc/manual/es/Backups.raw.wiki b/doc/manual/es/Backups.raw.wiki index ea056ee20..df05bd39b 100644 --- a/doc/manual/es/Backups.raw.wiki +++ b/doc/manual/es/Backups.raw.wiki @@ -11,61 +11,19 @@ !FreedomBox incluye la posibilidad de copiar y restaurar datos, preferencias, configuración y secretos de la mayoría de las aplicaciones. La funcionalidad de ''Backups'' se resuelve con el software de ''backup'' ''Borg''. ''Borg'' es un programa de ''backup'' con deduplicación y compresión. Está diseñado para hacer ''backups'' eficientes y seguros. Esta funcionalidad de ''backups'' se puede emplear para respaldar y recuperar datos aplicación por aplicación. Las copias de respaldado se pueden almacenar en la propia máquina !FreedomBox o en un servidor remoto. Cualquier servidor remoto con acceso por SSH se puede emplear como almacenamiento para los ''backups'' de la !FreedomBox. Las copias remotas se pueden cifrar para que el servidor remoto no pueda leer los datos que alberga. -=== Estados de la Funcionalidad de Backups === +=== Notas para respaldos específicos === +Salvo que aquí se diga lo contrario, el respaldo de los datos de una aplicación incluirá su configuración, secretos y otros datos. -|| '''App/Funcionalidad''' || '''Soporte en Versión''' || '''Notas''' || -|| Avahi || - || no precisa ''backup'' || -|| Backups || - || no precisa ''backup'' || -|| bepasty || 20.14 || || -|| Bind || 0.41 || || -|| calibre || 20.15 || || -|| Cockpit || - || no precisa ''backup'' || -|| Coturn || 20.8 || || -|| Datetime || 0.41 || || -|| Deluge || 0.41 || '''no''' incluye archivos descargados ni semillas || -|| Diagnostics || - || no precisa ''backup'' || -|| Dynamic DNS || 0.39 || || -|| ejabberd || 0.39 || incluye todos los datos y configuración || -|| Firewall || - || no precisa ''backup'' || -|| Gitweb || 19.19 || || -|| I2P || 19.6 || || -|| ikiwiki || 0.39 || incluye todos los wikis/blogs y sus contenidos || -|| infinoted || 0.39 || incluye todos los datos y claves || -|| JSXC || - || no precisa ''backup'' || -|| Let's Encrypt || 0.42 || || -|| Matrix Synapse || 0.39 || incluye media y cargas || -|| !MediaWiki || 0.39 || incluye páginas de wiki y archivos adjuntos || -|| Minetest || 0.39 || || -|| MiniDLNA || 19.23 || || -|| MLDonkey || 19.0 || || -|| Monkeysphere || 0.42 || || -|| Mumble || 0.40 || || -|| Names || - || no precisa ''backup'' || -|| Networks || No || sin planes para implementar ''backup'', de momento || -|| OpenVPN || 0.48 || incluye a todos los usuarios y claves de servidor || -|| Pagekite || 0.40 || || -|| Power || - || no precisa ''backup'' || -|| Privoxy || - || no precisa ''backup'' || -|| Quassel || 0.40 || incluye usuarios y registros de ejeución (''logs'') || -|| Radicale || 0.39 || incluye calendario y datos de tarjetas de todos los usuarios || -|| Roundcube || - || no precisa ''backup'' || -|| Samba || 19.22 || ''no''' incluye datos de las carpetas compartidas || -|| SearX || - || no precisa ''backup'' || -|| Secure Shell (SSH) Server || 0.41 || incluye las claves del servidor || -|| Security || 0.41 || || -|| Shadowsocks || 0.40 || solo secretos || -|| Sharing || 0.40 || '''no''' incluye datos de las carpetas compartidas || -|| Snapshot || 0.41 || solo configuración, '''no''' incluye datos de capturas (snapshots) || -|| Storage || - || no precisa ''backup'' || -|| Syncthing || 0.48 || '''no''' incluye datos de las carpetas compartidas || -|| Tahoe-LAFS || 0.42 || incluye todos los datos y configuración || -|| Tiny Tiny RSS || 19.2 || incluye base de datos con ''feeds'', historias, etc. || -|| Tor || 0.42 || includes configuración y secretos como las claves de servicios Tor Onion || -|| Transmission || 0.40 || '''no''' incluye archivos descargados ni semillas || -|| Upgrades || 0.42 || || -|| Users || No || sin planes para implementar ''backup'', de momento || -|| Wordpress || 21.8 || || -|| Zoph || 21.3 || || +|| '''App/Funcionalidad''' || '''Notas''' || +|| [[es/FreedomBox/Manual/Deluge|Deluge]] || No incluye archivos descargados/sembrados || +|| [[es/FreedomBox/Manual/MiniDLNA|MinDLNA]] || No incluye los datos en carpetas compartidas || +|| [[es/FreedomBox/Manual/Networks|Redes]] || Actualmente no hay planes para implementar respaldos || +|| [[es/FreedomBox/Manual/Samba|Samba]] || No incluye los datos en carpetas compartidas || +|| [[es/FreedomBox/Manual/Sharing|Sharing]] || No incluye los datos en carpetas compartidas || +|| Instantáneas || Solo configuración, no incluye datos de instantánea || +|| [[es/FreedomBox/Manual/Syncthing|Syncthing]] || No incluye los datos en carpetas compartidas || +|| [[es/FreedomBox/Manual/Transmission|Transmission]] || No incluye archivos descargados/sembrados || +|| [[es/FreedomBox/Manual/Users|Usuarios]] || El respaldo de cuentas de usuario está [[https://salsa.debian.org/freedombox-team/freedombox/-/issues/2051|planificado]] || === Cómo instalar y usar Backups === diff --git a/doc/manual/es/Calibre.raw.wiki b/doc/manual/es/Calibre.raw.wiki index a68e316c2..ee95fb34b 100644 --- a/doc/manual/es/Calibre.raw.wiki +++ b/doc/manual/es/Calibre.raw.wiki @@ -19,9 +19,6 @@ Sólo los usuarios del grupo ''calibre'' tienen acceso a las bibliotecas. Puedes Quizá ya estés familiarizado con el lector de libros para escritorio que viene con Calibre. El servidor Calibre que se instala en tu !FreedomBox viene con un lector web con aspecto similar, lo que te permite leer tus libros desde cualquier dispositivo con navegador web. -'''Nota acerca de las versiones de Calibre:''' -Dependiendo de la versión de Debian sobre la que se ejecuta tu !FreedomBox is running, tendrás una versión diferente de Calibre. Debian estable (Buster) lleva Calibre 3.x, ''en pruebas'' e ''inestable'' llevan Calibre 5.x. Esto implica que algunas funcionalidades experimentales como el lector web podrían no funcionar muy bien si estás en ''estable''. Esta situación mejorará el próximo año con la publicación de Debian 11 (Bullseye). Las actualizaciones frecuentes no abarcan a Calibre. - === Administrar Bibliotecas === Tras la instalación, estará disponible una biblioteca inicial "Library". El administrador de !FreedomBox puede añadir o eliminar cualquier biblioteca incluyendo la inicial desde los ajustes de la app en el interfaz web de !FreedomBox. diff --git a/doc/manual/es/MLDonkey.raw.wiki b/doc/manual/es/MLDonkey.raw.wiki index dc836a7a0..fe98c0048 100644 --- a/doc/manual/es/MLDonkey.raw.wiki +++ b/doc/manual/es/MLDonkey.raw.wiki @@ -10,8 +10,7 @@ == MLDonkey (Compartir archivos entre pares) == || {{attachment:FreedomBox/Manual/MLDonkey/MLDonkey-icon_en_V01.png|icono de MLDonkey}} || -'''Disponible desde:''' versión 0.48.0 - +'''Disponible desde:''' versión 0.48.0, pero ya no está disponible ni en Bullseye (estable) ni en Bookworm (en pruebas). === ¿Qué es MLDonkey? === ''MLDonkey'' es una aplicación libre y multiprotocolo para compartir archivos entre pares (P2P) que ejecuta un servidor ''back-end'' sobre muchas plataformas. Se puede controlar mediante algún interfaz ''front-end'', ya sea web, telnet o cualquier otro de entre una docena de programas cliente nativos. diff --git a/doc/manual/es/Plinth.raw.wiki b/doc/manual/es/Plinth.raw.wiki index 98d0303cc..3a32d93e4 100644 --- a/doc/manual/es/Plinth.raw.wiki +++ b/doc/manual/es/Plinth.raw.wiki @@ -6,9 +6,9 @@ El servicio !FreedomBox es [[https://www.gnu.org/philosophy/|Software Libre]] ba === Uso === - * El servicio !FreedomBox viene instalado en todas las imágenes de !FreedomBox. Puedes [[FreedomBox/Download|descargar]] imágenes de !FreedomBox y ejecutarlas en cualquier hardware soportado. El servicio !FreedomBox (Plinth) estará accesible visitando la URL [[http://freedombox/plinth]] o [[https://freedombox.local/plinth]]. + * El servicio !FreedomBox viene instalado en todas las imágenes de !FreedomBox. Puedes [[FreedomBox/Download|descargar]] imágenes de !FreedomBox y ejecutarlas en cualquier hardware soportado. Para acceder al interfaz de !FreedomBox consulta [[es/FreedomBox/Manual/QuickStart|Guía rápida]]. - * Si estás en una máquina Debian puedes instalar el servicio !FreedomBox desde el archivo de paquetes de Debian. Actualmente solo se soportan Buster (estable), Bullseye (en pruebas) y Sid (inestable). Para instalar el servicio !FreedomBox ejecuta: + * Si estás en una máquina Debian puedes instalar el servicio !FreedomBox desde el archivo de paquetes de Debian. Actualmente solo se soportan Bullseye (estable), Bookworm (en pruebas) y Sid (inestable). Para instalar el servicio !FreedomBox ejecuta: {{{ $ sudo apt-get install freedombox diff --git a/doc/manual/es/Radicale.raw.wiki b/doc/manual/es/Radicale.raw.wiki index 35189c65e..fc622f0ab 100644 --- a/doc/manual/es/Radicale.raw.wiki +++ b/doc/manual/es/Radicale.raw.wiki @@ -137,45 +137,6 @@ file = /etc/radicale/rights ==== Importar archivos ==== Si estás usando un archivo de contactos exportado desde otro servicio o aplicación hay que copiarlo a: /var/lib/radicale/collections//'.vcf. -=== Migrar desde Radicale versión 1.x a versión 2.x === - -En Febrero de 2019 se actualizó Radicale en las versiones "en pruebas" (testing) de Debian desde la versión 1.x a la 2.x. La versión 2.x es mejor pero incompatible con los datos y la configuración empleados en la 1.x. El mecanismo automático de actualización de !FreedomBox que emplean las actualizaciones desatendidas no actualiza automaticamente la version 2.x de Radicale debido a cambios en los archivos de configuración. No obstante la version 19.1 de !FreedomBox, disponible en en las versiones "en pruebas" (testing) desde el 23 de Febrero de 2019, realizará la migración de los datos y la configuración a la versión 2.x de Radicale. No se requiere ninguna acción por parte de los usuarios típicos. Ocurrirá automáticamente. - -Si por algún motivo necesitas ejecutar a mano `apt dist-upgrade` en tu máquina Radicale se actualizará a 2.x y entonces tu !FreedomBox no podrá ejecutar esta actualización (ya que el proyecto de origen decidió eliminar las herramientas de migración de la versión 2.x de Radicale). Para evitar esta situación se recomienda el siguiente procedimiento para actualizar. - -{{{ -sudo su - -apt hold radicale -apt dist-upgrade -apt unhold radicale -}}} - -En cualquier caso, si ya has actualizado a Radicale 2.x sin ayuda de !FreedomBox necesitas realizar la migración de los datos y la configuración por tí mismo. Sigue este procedimiento: - -{{{ -sudo su - -tar -cvzf /root/radicale_backup.tgz /var/lib/radicale/ /etc/radicale/ /etc/default/radicale -apt install -y python-radicale -python -m radicale --export-storage=/root/radicale-migration -cp -dpR /root/radicale-migration/collection-root /var/lib/radicale/collections/collection-root/ -(elimina este directorio si ya existe. O mezcla los contenidos.) -chown -R radicale:radicale /var/lib/radicale/collections/collection-root/ -apt remove -y python-radicale -if [ -f /etc/radicale/config.dpkg-dist ] ; then cp /etc/radicale/config.dpkg-dist /etc/radicale/config ; fi -if [ -f /etc/default/radicale.dpkg-dist ] ; then cp /etc/default/radicale.dpkg-dist /etc/default/radicale ; fi -(Cuando FreedomBox 19.1 está disponble ve al interfaz web de FreedomBox y vuelve a configurar tu preferencia de compartición de calendario si no se muestra bien porque se habrá perdido durante la operación.) -}}} - -Notas: - * `python-radicale` es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un ''hack'' alternativo para emplear la funcionalidad `--export-storage` que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. - * Los ficheros que acaban en `.dpkg-dist` solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario. - * Nota: Durante la migración tus datos permanecen a salvo en el directorio `/var/lib/radicale/collections`. Los datos nuevos se crearán y usarán en el directorio `/var/lib/radicale/collections/collections-root/`. - * El comando `tar` hace una copia de seguridad de tu configuración y tus datos en `/root/radicale_backup.tgz` por si haces o algo va mal y quieres deshacer los cambios. - -=== Resolución de Problemas === - -1. Si estás usando !FreedomBox Pioneer Edition o instalando !FreedomBox sobre Debian Buster Radicale podría no estar operativo inmediatamente después de la instalación. Esto se debe a un defecto ya corregido posteriormente. Para superar el problema actualiza !FreedomBox haciendo clic en 'Actualización Manual' desde la app 'Actualizaciones'. Otra opción es simplemente esperar un par de días y dejar que !FreedomBox se actualice solo. Después instala Radicale. Si Radicale ya está instalado deshabilitalo y rehabilitalo después de que se complete la actualización. Esto arreglará el problema y dejará a Radicale trabajando correctamente. - === Enlaces externos === diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki index 7db076949..4c9b99735 100644 --- a/doc/manual/es/ReleaseNotes.raw.wiki +++ b/doc/manual/es/ReleaseNotes.raw.wiki @@ -10,6 +10,27 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f The following are the release notes for each !FreedomBox version. +== FreedomBox 21.13 (2021-11-08) == + +=== Highlights === + + * avahi, samba: Use systemd sandboxing + * components: Introduce new component - Packages + * security: Properly handle sandbox analysis of timer units + +=== Other Changes === + + * email_server (not enabled yet): + * Add buttons for managing aliases, domains, spam + * Authenticate using PAM instead of LDAP + * Delivery mail to /var/mail instead of home directory + * Don't use user IDs when performing lookups + * Drop hash DB and use sqlite3 directly + * Use Django forms and views + * locale: Update translations for German, Swedish, Turkish, Ukrainian + * tests: Use !BaseAppTests for functional tests of most apps + * utils: Fix ruamel.yaml deprecation warnings + == FreedomBox 21.12 (2021-10-25) == * locale: Update translations for Bulgarian, Czech, French, German, Turkish, Ukrainian diff --git a/doc/manual/es/WireGuard.raw.wiki b/doc/manual/es/WireGuard.raw.wiki index 04f8b8172..cc3528e66 100644 --- a/doc/manual/es/WireGuard.raw.wiki +++ b/doc/manual/es/WireGuard.raw.wiki @@ -16,10 +16,7 @@ === Instalación === -En está disponible para [[DebianBuster]] en [[Backports]]. Si tu lista de fuentes incluye a backports, Puedes instalar wireguard desde la sección Apps del interfaz web de !FreedomBox. -{{{#!wiki caution - WireGuard no se puede instalar aún en !FreedomBox con buster-backports porque el servicio !FreedomBox necesita una nueva versión de NetworkManager para ponerla en funcionamiento. -}}} +Puedes instalar !WireGuard desde la sección ''Apps'' de la interfaz de !FreedomBox. === Configuración - Debian Peers === From 898a854ddcc87eb593b1cee252fec5c491d6bea6 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 8 Nov 2021 21:34:54 -0500 Subject: [PATCH 74/74] Release v21.13 to unstable Signed-off-by: James Valleroy --- debian/changelog | 91 ++++++++++++++++++++++++++++++++++++++++++++++ plinth/__init__.py | 2 +- 2 files changed, 92 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 46f39e79c..1d66dee88 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,94 @@ +freedombox (21.13) unstable; urgency=medium + + [ Burak Yavuz ] + * Translated using Weblate (Turkish) + + [ Andrij Mizyk ] + * Translated using Weblate (Ukrainian) + + [ Michael Breidenbach ] + * Translated using Weblate (Swedish) + * Translated using Weblate (Swedish) + + [ Joseph Nuthalapati ] + * utils: Fix ruamel.yaml deprecation warnings + * components: Introduce new component - Packages + * setup: Use packages from Packages component + * components: Add docstrings & tutorial for Packages + + [ Sunil Mohan Adapa ] + * email_server: Refactor the home directory page + * email_server: Add button for setting up home directory + * email_server: Turn home view into a simple page rather than a tab + * email_server: Add button for managing aliases + * email_server: Remove aliases view from tabs list + * email_server: Add heading for manage aliases page + * email_server: Reduce the size of headings for aliases/homedir pages + * email_server: aliases: Add method for checking of an alias is taken + * email_server: aliases: Using Django forms instead of custom forms + * email_server: aliases: Drop validation already done by form + * email_server: aliases: Move sanitizing to form + * email_server: aliases: Drop unnecessary sanitizing + * email_server: aliases: Drop unused sanitizing method + * email_server: aliases: Drop unused regex + * email_server: yapf formatting + * email_server: aliases: Drop hash DB and use sqlite3 directly + * email_server: aliases: Minor refactoring + * email_server: aliases: Minor refactoring to DB schema + * email_server: aliases: Minor refactor to list view + * email_server: aliases: Fix showing empty alias list message + * email_server: aliases: Refactor for simpler organization + * email_server: tls: Drop unimplemented TLS forms/view + * email_server: rspamd: Turn spam management link to a button + * email_server: domains: Add button for domain management form + * email_server: Remove tabs from the interface + * email_server: homedir: Fix styling to not show everything as header + * email_server: Minor refactor of license statement in templates + * email_server: domains: Use Django forms and views + * email_server: domains: Add validation to form + * email_server: action: Refactor for simplicity + * email_server: yapf formatting + * log, email_server: Don't use syslog instead of journald + * email_server: action: Add argument type checking for extra safety + * email_server: Don't use user IDs when performing lookups + * email_server: Lookup LDAP local recipients via PAM + * email_server: dovecot: Authenticate using PAM instead of LDAP + * email_server: dovecot: Don't deliver mail to home directory + * email_server: Setup /var/mail, drop home setup view + * email_server: Use rollback journal for aliases sqlite DB + * security: Properly handle sandbox analysis of timer units + + [ Johannes Keyser ] + * Translated using Weblate (German) + + [ James Valleroy ] + * tests: Use background fixture for each test + * bepasty: Use BaseAppTests for functional tests + * bind: Use BaseAppTests for functional tests + * calibre: Use BaseAppTests for functional tests + * deluge: Use BaseAppTests for functional tests + * ejabberd: Use BaseAppTests for functional tests + * gitweb: Use BaseAppTests for functional tests + * ikiwiki: Use BaseAppTests for functional tests + * mediawiki: Use BaseAppTests for functional tests + * mldonkey: Use BaseAppTests for functional tests + * openvpn: Use BaseAppTests for functional tests + * pagekite: Use BaseAppTests for functional tests + * radicale: Use BaseAppTests for functional tests + * samba: Use BaseAppTests for functional tests + * shadowsocks, syncthing: Use BaseAppTests for functional tests + * transmission: Use BaseAppTests for functional tests + * tahoe: Use BaseAppTests for functional tests + * tor: Use BaseAppTests for functional tests + * tests: functional: Add diagnostics delay parameter + * avahi: Use systemd sandboxing + * samba: Use systemd sandboxing for smbd/nmbd + * debian: Add python3-openssl to autopkgtest depends + * locale: Update translation strings + * doc: Fetch latest manual + + -- James Valleroy Mon, 08 Nov 2021 21:34:27 -0500 + freedombox (21.12) unstable; urgency=medium [ Burak Yavuz ] diff --git a/plinth/__init__.py b/plinth/__init__.py index aa83f0583..252067f14 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -3,4 +3,4 @@ Package init file. """ -__version__ = '21.12' +__version__ = '21.13'