From 2868d5356116883408354342376871616a3db2ab Mon Sep 17 00:00:00 2001 From: Thomas Vincent Date: Tue, 3 Dec 2019 22:39:22 +0000 Subject: [PATCH 01/42] Translated using Weblate (French) Currently translated at 100.0% (1115 of 1115 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 24baf2207..e70ce1a27 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-02 17:30-0500\n" -"PO-Revision-Date: 2019-11-21 18:04+0000\n" -"Last-Translator: Fred \n" +"PO-Revision-Date: 2019-12-05 22:05+0000\n" +"Last-Translator: Thomas Vincent \n" "Language-Team: French \n" "Language: fr\n" @@ -3804,7 +3804,7 @@ msgstr "Activer le serveur OpenVPN" #: plinth/modules/openvpn/manifest.py:63 msgid "TunnelBlick" -msgstr "" +msgstr "TunnelBlick" #: plinth/modules/openvpn/templates/openvpn.html:42 #, python-format @@ -4608,13 +4608,15 @@ msgstr "" #: plinth/modules/samba/__init__.py:43 msgid "Samba" -msgstr "" +msgstr "Samba" #: plinth/modules/samba/__init__.py:48 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" +"Samba permet de partager des fichiers et des répertoires entre FreedomBox et " +"d’autres machines de votre réseau local." #: plinth/modules/samba/__init__.py:51 #, python-brace-format @@ -4623,6 +4625,10 @@ msgid "" "{hostname} shares are open to everyone in your local network and are " "accessible under Network section in the file manager on your computer." msgstr "" +"Après l’installation, vous pouvez choisir quels disques utiliser pour le " +"partage. Les partages {hostname} activés sont ouverts à toutes les personnes " +"de votre réseau local et sont accessibles dans la section Réseau du " +"gestionnaire de fichiers de votre ordinateur." #: plinth/modules/samba/__init__.py:57 msgid "Access shared folders from inside the server" From 3968cefc4801e00b8c8a97455811603ffa09250b Mon Sep 17 00:00:00 2001 From: Fred Date: Wed, 4 Dec 2019 21:43:40 +0000 Subject: [PATCH 02/42] Translated using Weblate (French) Currently translated at 100.0% (1115 of 1115 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 117 +++++++------------------ 1 file changed, 30 insertions(+), 87 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index e70ce1a27..ca75e8338 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-02 17:30-0500\n" "PO-Revision-Date: 2019-12-05 22:05+0000\n" -"Last-Translator: Thomas Vincent \n" +"Last-Translator: Fred \n" "Language-Team: French \n" "Language: fr\n" @@ -667,20 +667,13 @@ msgstr "" "des opérations depuis une console." #: plinth/modules/cockpit/__init__.py:57 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Cockpit will be available from /_cockpit/ path on the web server. It can be " -#| "accessed by any user on {box_name} belonging " -#| "to the admin group." +#, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -"Une fois activé, Cockpit est accessible depuis le chemin /_cockpit sur le serveur web. Il peut être " -"consulté par tout utilisateur avec un compte " -"admin sur {box_name}." +"Il peut être consulté par tout utilisateur " +"faisant partie du groupe admin sur {box_name}." #: plinth/modules/config/__init__.py:37 msgid "General Configuration" @@ -954,19 +947,11 @@ 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:45 -#, fuzzy -#| msgid "" -#| "When enabled, the Deluge web client will be available from /deluge path on the web server. " -#| "The default password is 'deluge', but you should log in and change it " -#| "immediately after enabling this service." msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -"Lorsqu'il est activé, le client Web Deluge sera accessible depuis le chemin " -"/deluge sur le serveur " -"Web. Le mot de passe par défaut est 'deluge'. Vous devrez toutefois vous " +"Le mot de passe par défaut est 'deluge'. Vous devrez toutefois vous " "connecter et le changer tout de suite après l'activation du service." #: plinth/modules/deluge/__init__.py:49 @@ -2218,13 +2203,6 @@ msgid "Wiki and Blog" msgstr "Wiki et Blogue" #: plinth/modules/ikiwiki/__init__.py:46 -#, fuzzy -#| 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. When enabled, the blogs and " -#| "wikis will be available at /ikiwiki (once created)." msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2232,9 +2210,7 @@ msgid "" msgstr "" "ikiwiki est une application simple de wiki et de blogs. Il prend en charge " "plusieurs langages de balisage légers, y compris Markdown, et les " -"fonctionnalités de blog habituels tels que les commentaires et les flux RSS. " -"Une fois activés, les blogs et les wikis seront disponibles sur /ikiwiki (s'il sont créés)." +"fonctionnalités de blog habituels tels que les commentaires et les flux RSS." #: plinth/modules/ikiwiki/__init__.py:50 #, python-brace-format @@ -3841,13 +3817,7 @@ msgid "Profile" msgstr "Profil" #: plinth/modules/openvpn/templates/openvpn.html:90 -#, fuzzy, python-format -#| msgid "" -#| "To connect to %(box_name)s's VPN, you need to download a profile and feed " -#| "it to an OpenVPN client on your mobile or desktop machine. OpenVPN " -#| "Clients are available for most platforms. See the manual page " -#| "on recommended clients and instructions on how to configure them." +#, python-format msgid "" "To connect to %(box_name)s's VPN, you need to download a profile and feed it " "to an OpenVPN client on your mobile or desktop machine. OpenVPN Clients are " @@ -3857,9 +3827,8 @@ msgstr "" "Pour vous connecter au réseau VPN de %(box_name)s, vous devez télécharger un " "profil et le fournir à un client OpenVPN sur votre mobile ou sur votre " "ordinateur. Les clients OpenVPN sont disponibles pour de nombreuses plate-" -"formes. Voir la documentation wiki consacrée aux clients recommandés " -"et aux instructions liées à leur configuration." +"formes. Cliquez sur « En savoir plus… » ci-dessus pour connaître les clients " +"recommandés et les instructions liées à leur configuration." #: plinth/modules/openvpn/templates/openvpn.html:100 #, python-format @@ -3932,13 +3901,7 @@ msgid "Your ISP limits incoming connections." msgstr "Votre FAI limite les connexions entrantes." #: plinth/modules/pagekite/__init__.py:61 -#, fuzzy, python-brace-format -#| msgid "" -#| "PageKite works around NAT, firewalls and IP-address limitations by using " -#| "a combination of tunnels and reverse proxies. You can use any pagekite " -#| "service provider, for example pagekite." -#| "net. In future it might be possible to use your buddy's {box_name} " -#| "for this." +#, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " "combination of tunnels and reverse proxies. You can use any pagekite service " @@ -4058,10 +4021,8 @@ msgstr "Services Personnalisés" #: plinth/modules/pagekite/templates/pagekite_configure.html:50 #: plinth/modules/pagekite/templates/pagekite_configure.html:52 -#, fuzzy -#| msgid "Custom Services" msgid "Add Custom Service" -msgstr "Services Personnalisés" +msgstr "Ajouter un service personnalisé" #: plinth/modules/pagekite/templates/pagekite_configure.html:57 msgid "Existing custom services" @@ -4077,10 +4038,8 @@ msgid "Delete this service" msgstr "Supprimer ce service" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:30 -#, fuzzy -#| msgid "Added custom service" msgid "Add custom PageKite service" -msgstr "Service personnalisé ajouté" +msgstr "Ajouter un service PageKite personnalisé" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:32 msgid "" @@ -4632,19 +4591,19 @@ msgstr "" #: plinth/modules/samba/__init__.py:57 msgid "Access shared folders from inside the server" -msgstr "" +msgstr "Accéder aux répertoires partagés depuis le serveur" #: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" msgid "Select disks for sharing" -msgstr "Choisissez un disque ou une partition" +msgstr "Choisissez les disques à partager" #: plinth/modules/samba/templates/samba.html:40 msgid "" "Note: only specially created directory will be shared on selected disks, not " "the whole disk." msgstr "" +"Note : seuls les répertoires créés spécialement pour cela seront partagés " +"sur les disques sélectionnés, pas les disques en entier." #: plinth/modules/samba/templates/samba.html:50 #: plinth/modules/storage/templates/storage.html:41 @@ -4663,51 +4622,41 @@ msgstr "Utilisé" #: plinth/modules/samba/templates/samba.html:76 msgid "vfat partitions are not supported" -msgstr "" +msgstr "Les partitions formatées en VFAT ne sont pas gérées" #: plinth/modules/samba/templates/samba.html:108 msgid "Shares configured but the disk is not available" -msgstr "" +msgstr "Les partages sont configurés mais le disque n'est pas disponible" #: plinth/modules/samba/templates/samba.html:110 msgid "If the disk is plugged back in, sharing will be automatically enabled." -msgstr "" +msgstr "Si le disque est rebranché, le partage sera automatiquement activé." #: plinth/modules/samba/templates/samba.html:115 -#, fuzzy -#| msgid "Share added." msgid "Share name" -msgstr "Partage créé." +msgstr "Nom du partage" #: plinth/modules/samba/templates/samba.html:116 -#, fuzzy -#| msgid "Actions" msgid "Action" -msgstr "Actions" +msgstr "Action" #: plinth/modules/samba/views.py:74 -#, fuzzy -#| msgid "Share deleted." msgid "Share enabled." -msgstr "Partage supprimé." +msgstr "Partage activé." #: plinth/modules/samba/views.py:79 -#, fuzzy, python-brace-format -#| msgid "Error ejecting device: {error_message}" +#, python-brace-format msgid "Error enabling share: {error_message}" -msgstr "Erreur lors de l'éjection du media : {error_message}" +msgstr "Erreur lors de l'activation du partage : {error_message}" #: plinth/modules/samba/views.py:95 -#, fuzzy -#| msgid "Share edited." msgid "Share disabled." -msgstr "Partage modifié." +msgstr "Partage désactivé." #: plinth/modules/samba/views.py:100 -#, fuzzy, python-brace-format -#| msgid "Error ejecting device: {error_message}" +#, python-brace-format msgid "Error disabling share: {error_message}" -msgstr "Erreur lors de l'éjection du media : {error_message}" +msgstr "Erreur lors de la désactivation du partage : {error_message}" #: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 msgid "Searx" @@ -5868,19 +5817,13 @@ msgstr "" "ordinateur." #: plinth/modules/ttrss/__init__.py:52 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Tiny Tiny RSS will be available from /tt-rss path on the web server. It can be " -#| "accessed by any user with a {box_name} login." +#, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -"Une fois activé, Tiny Tiny RSS est accessible depuis le chemin /tt-rss sur le serveur web. Il peut être " -"consulté par tout utilisateur avec un compte " -"{box_name}." +"Une fois activé, Tiny Tiny RSS peut être consulté par tout utilisateur avec un compte {box_name}." #: plinth/modules/ttrss/__init__.py:56 msgid "" From f004939f50c3c9b1fa27db105d2bb48fdc921259 Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Tue, 5 Nov 2019 16:03:24 +0530 Subject: [PATCH 03/42] show app icons in apps page - restructure the template markup so as to show the icon towards the left of the app heading and description. - if condition to provide backwards compatiblity to system apps using setup.html. - deluge and matrixsynapse modules have a new property that will be used for accessing the icon file name. (to be replicated across all other modules *weew*) Reviewed-by: James Valleroy --- plinth/templates/setup.html | 44 +++++++++++++++++++++------- static/themes/default/css/plinth.css | 28 ++++++++++++++++++ 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/plinth/templates/setup.html b/plinth/templates/setup.html index a79d3f414..03f75ca67 100644 --- a/plinth/templates/setup.html +++ b/plinth/templates/setup.html @@ -36,18 +36,42 @@ {% block content %} -

{% trans "Installation" %}: {{ setup_helper.module.short_description|default:'' }} ({{ setup_helper.module.name }})

+ {% if setup_helper.module.icon_filename %} +
+
+ +
{{ setup_helper.module.name }}
+
+
+

{% trans "Installation" %}: {{ setup_helper.module.short_description|default:'' }} ({{ setup_helper.module.name }})

+ + {% for paragraph in setup_helper.module.description %} +

{{ paragraph|safe }}

+ {% endfor %} - {% for paragraph in setup_helper.module.description %} -

{{ paragraph|safe }}

- {% endfor %} + {% if setup_helper.module.manual_page %} +

+ + {% trans 'Learn more...' %} + +

+ {% endif %} +
+
+ {% else %} +

{% trans "Installation" %}: {{ setup_helper.module.short_description|default:'' }} ({{ setup_helper.module.name }})

- {% if setup_helper.module.manual_page %} -

- - {% trans 'Learn more...' %} - -

+ {% for paragraph in setup_helper.module.description %} +

{{ paragraph|safe }}

+ {% endfor %} + + {% if setup_helper.module.manual_page %} +

+ + {% trans 'Learn more...' %} + +

+ {% endif %} {% endif %} {% include "toolbar.html" with clients=setup_helper.module.clients %} diff --git a/static/themes/default/css/plinth.css b/static/themes/default/css/plinth.css index b38a3e28c..2ea12ad95 100644 --- a/static/themes/default/css/plinth.css +++ b/static/themes/default/css/plinth.css @@ -505,9 +505,11 @@ a.menu_link_active { left: 6%; transform: translateY(-50%); } + .toggle-button--toggled { background: #337ab7; } + .toggle-button--toggled::before { content: ''; position: absolute; @@ -535,3 +537,29 @@ a.menu_link_active { .btn-toolbar .button-extra-actions { float: right; } + +.app-header { + display: grid; + grid-template-columns: 0.2fr 1fr; + column-gap: 20px; + margin-bottom: 20px; +} + +.app-header > figure { + margin-top: 25px; +} + +.app-header > figure img { + width: 100%; +} + +.app-header > figure figcaption { + text-align: center; + opacity: 0.5; + padding: 10px; + font-size: 12px; +} + +.app-description { + grid-column: 2; +} From fa74a26042b88bdeb01ff72ce89dbfa5ae78a57e Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Tue, 5 Nov 2019 16:05:51 +0530 Subject: [PATCH 04/42] use single variable for referencing icon filename - add and use "icon_filename" property to almost all of the modules being displayed in the apps page - sharing and tor modules do not seem to be using setup.html template file and so the variable is not added to their __init__.py files, therefore the icon will not be displayed on these app pages. Reviewed-by: James Valleroy --- plinth/modules/deluge/__init__.py | 4 +++- plinth/modules/ejabberd/__init__.py | 4 +++- plinth/modules/ejabberd/views.py | 1 + plinth/modules/gitweb/__init__.py | 4 +++- plinth/modules/i2p/__init__.py | 4 +++- plinth/modules/ikiwiki/__init__.py | 5 ++++- plinth/modules/infinoted/__init__.py | 6 ++++-- plinth/modules/jsxc/__init__.py | 5 ++++- plinth/modules/matrixsynapse/__init__.py | 4 +++- plinth/modules/mediawiki/__init__.py | 4 +++- plinth/modules/minetest/__init__.py | 4 +++- plinth/modules/mldonkey/__init__.py | 4 +++- plinth/modules/mumble/__init__.py | 6 ++++-- plinth/modules/openvpn/__init__.py | 4 +++- plinth/modules/privoxy/__init__.py | 6 ++++-- plinth/modules/quassel/__init__.py | 4 +++- plinth/modules/radicale/__init__.py | 4 +++- plinth/modules/roundcube/__init__.py | 5 ++++- plinth/modules/searx/__init__.py | 4 +++- plinth/modules/shadowsocks/__init__.py | 4 +++- plinth/modules/syncthing/__init__.py | 4 +++- plinth/modules/tahoe/__init__.py | 4 +++- plinth/modules/tahoe/views.py | 1 + plinth/modules/transmission/__init__.py | 4 +++- plinth/modules/ttrss/__init__.py | 4 +++- plinth/templates/setup.html | 3 ++- 26 files changed, 79 insertions(+), 27 deletions(-) diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index 4eb6bcbca..733375366 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -38,6 +38,8 @@ managed_packages = ['deluged', 'deluge-web'] name = _('Deluge') +icon_filename = 'deluge' + short_description = _('BitTorrent Web Client') description = [ @@ -71,7 +73,7 @@ class DelugeApp(app_module.App): shortcut = frontpage.Shortcut('shortcut-deluge', name, short_description=short_description, - url='/deluge', icon='deluge', + url='/deluge', icon=icon_filename, clients=clients, login_required=True, allowed_groups=[group[0]]) self.add(shortcut) diff --git a/plinth/modules/ejabberd/__init__.py b/plinth/modules/ejabberd/__init__.py index 0fab45d90..29046027d 100644 --- a/plinth/modules/ejabberd/__init__.py +++ b/plinth/modules/ejabberd/__init__.py @@ -49,6 +49,8 @@ managed_paths = [pathlib.Path('/etc/ejabberd/')] name = _('ejabberd') +icon_filename = 'ejabberd' + short_description = _('Chat Server') description = [ @@ -96,7 +98,7 @@ class EjabberdApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-ejabberd', name, short_description=short_description, - icon='ejabberd', description=description, + icon=icon_filename, description=description, configure_url=reverse_lazy('ejabberd:index'), clients=clients, login_required=True) self.add(shortcut) diff --git a/plinth/modules/ejabberd/views.py b/plinth/modules/ejabberd/views.py index eedf24921..65523e4d5 100644 --- a/plinth/modules/ejabberd/views.py +++ b/plinth/modules/ejabberd/views.py @@ -38,6 +38,7 @@ class EjabberdAppView(AppView): form_class = EjabberdForm manual_page = ejabberd.manual_page port_forwarding_info = ejabberd.port_forwarding_info + icon_filename = ejabberd.icon_filename def get_initial(self): initdict = super().get_initial() diff --git a/plinth/modules/gitweb/__init__.py b/plinth/modules/gitweb/__init__.py index be37b483d..2970349eb 100644 --- a/plinth/modules/gitweb/__init__.py +++ b/plinth/modules/gitweb/__init__.py @@ -42,6 +42,8 @@ managed_packages = ['gitweb', 'highlight'] name = _('Gitweb') +icon_filename = 'gitweb' + short_description = _('Simple Git Hosting') description = [ @@ -78,7 +80,7 @@ class GitwebApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-gitweb', name, short_description=short_description, - icon='gitweb', url='/gitweb/', clients=clients, + icon=icon_filename, url='/gitweb/', clients=clients, login_required=True, allowed_groups=[group[0]]) self.add(shortcut) diff --git a/plinth/modules/i2p/__init__.py b/plinth/modules/i2p/__init__.py index b7041f676..a38ee2336 100644 --- a/plinth/modules/i2p/__init__.py +++ b/plinth/modules/i2p/__init__.py @@ -41,6 +41,8 @@ managed_packages = ['i2p'] name = _('I2P') +icon_filename = 'i2p' + short_description = _('Anonymity Network') description = [ @@ -89,7 +91,7 @@ class I2PApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-i2p', name, short_description=short_description, - icon='i2p', url='/i2p/', clients=clients, login_required=True, + icon=icon_filename, url='/i2p/', clients=clients, login_required=True, allowed_groups=[group[0]]) self.add(shortcut) diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 1af5afe8d..558dbeb44 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -40,6 +40,8 @@ managed_packages = [ name = _('ikiwiki') +icon_filename = 'ikiwiki' + short_description = _('Wiki and Blog') description = [ @@ -89,7 +91,8 @@ class IkiwikiApp(app_module.App): def add_shortcut(self, site, title): """Add an ikiwiki shortcut to frontpage.""" shortcut = frontpage.Shortcut('shortcut-ikiwiki-' + site, title, - icon='ikiwiki', url='/ikiwiki/' + site, + icon=icon_filename, + url='/ikiwiki/' + site, clients=clients) self.add(shortcut) return shortcut diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index a2def39d7..2493540a5 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -41,6 +41,8 @@ manual_page = 'Infinoted' name = _('infinoted') +icon_filename = 'infinoted' + short_description = _('Gobby Server') description = [ @@ -74,7 +76,7 @@ class InfinotedApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-infinoted', name, short_description=short_description, - icon='infinoted', description=description, + icon=icon_filename, description=description, configure_url=reverse_lazy('infinoted:index'), clients=clients, login_required=False) self.add(shortcut) @@ -104,7 +106,7 @@ class InfinotedAppView(AppView): description = description clients = clients port_forwarding_info = port_forwarding_info - + icon_filename = icon_filename def setup(helper, old_version=None): """Install and configure the module.""" diff --git a/plinth/modules/jsxc/__init__.py b/plinth/modules/jsxc/__init__.py index 2b45fbc96..4fb4475f4 100644 --- a/plinth/modules/jsxc/__init__.py +++ b/plinth/modules/jsxc/__init__.py @@ -35,6 +35,8 @@ managed_packages = ['libjs-jsxc'] name = _('JSXC') +icon_filename = 'jsxc' + short_description = _('Chat Client') description = [ @@ -63,7 +65,8 @@ class JSXCApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-jsxc', name=name, short_description=short_description, - icon='jsxc', url=reverse_lazy('jsxc:jsxc'), clients=clients) + icon=icon_filename, + url=reverse_lazy('jsxc:jsxc'), clients=clients) self.add(shortcut) firewall = Firewall('firewall-jsxc', name, ports=['http', 'https'], diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index 9a4fb4a10..a35926aa3 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -46,6 +46,8 @@ managed_paths = [pathlib.Path('/etc/matrix-synapse/')] name = _('Matrix Synapse') +icon_filename = 'matrixsynapse' + short_description = _('Chat Server') description = [ @@ -91,7 +93,7 @@ class MatrixSynapseApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-matrixsynapse', name, - short_description=short_description, icon='matrixsynapse', + short_description=short_description, icon=icon_filename, description=description, configure_url=reverse_lazy('matrixsynapse:index'), clients=clients, login_required=True) diff --git a/plinth/modules/mediawiki/__init__.py b/plinth/modules/mediawiki/__init__.py index 66c7b490e..4bd4aeba0 100644 --- a/plinth/modules/mediawiki/__init__.py +++ b/plinth/modules/mediawiki/__init__.py @@ -37,6 +37,8 @@ managed_services = ['mediawiki-jobrunner'] name = _('MediaWiki') +icon_filename = 'mediawiki' + short_description = _('Wiki') description = [ @@ -78,7 +80,7 @@ class MediaWikiApp(app_module.App): shortcut = Shortcut('shortcut-mediawiki', name, short_description=short_description, - icon='mediawiki', url='/mediawiki', + icon=icon_filename, url='/mediawiki', clients=clients, login_required=True) self.add(shortcut) diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index 783df989f..d5a651247 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -50,6 +50,8 @@ managed_packages = ['minetest-server'] + mods name = _('Minetest') +icon_filename = 'minetest' + short_description = _('Block Sandbox') description = [ @@ -90,7 +92,7 @@ class MinetestApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-minetest', name, short_description=short_description, - icon='minetest', description=description, + icon=icon_filename, description=description, configure_url=reverse_lazy('minetest:index'), clients=clients, login_required=False) self.add(shortcut) diff --git a/plinth/modules/mldonkey/__init__.py b/plinth/modules/mldonkey/__init__.py index 17ee6ad43..3c73ad8b3 100644 --- a/plinth/modules/mldonkey/__init__.py +++ b/plinth/modules/mldonkey/__init__.py @@ -39,6 +39,8 @@ managed_packages = ['mldonkey-server'] name = _('MLDonkey') +icon_filename = 'mldonkey' + short_description = _('Peer-to-peer File Sharing') description = [ @@ -80,7 +82,7 @@ class MLDonkeyApp(app_module.App): shortcuts = frontpage.Shortcut( 'shortcut-mldonkey', name, short_description=short_description, - icon='mldonkey', url='/mldonkey/', login_required=True, + icon=icon_filename, url='/mldonkey/', login_required=True, clients=clients, allowed_groups=[group[0]]) self.add(shortcuts) diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 881af3de8..0bfa39469 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -34,6 +34,8 @@ version = 1 name = _('Mumble') +icon_filename = 'mumble' + short_description = _('Voice Chat') managed_services = ['mumble-server'] @@ -76,7 +78,7 @@ class MumbleApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-mumble', name, short_description=short_description, - icon='mumble', description=description, + icon=icon_filename, description=description, configure_url=reverse_lazy('mumble:index'), clients=clients) self.add(shortcut) @@ -106,7 +108,7 @@ class MumbleAppView(AppView): clients = clients manual_page = manual_page port_forwarding_info = port_forwarding_info - + icon_filename = icon_filename def setup(helper, old_version=None): """Install and configure the module.""" diff --git a/plinth/modules/openvpn/__init__.py b/plinth/modules/openvpn/__init__.py index b99b97a4d..b2a57b862 100644 --- a/plinth/modules/openvpn/__init__.py +++ b/plinth/modules/openvpn/__init__.py @@ -38,6 +38,8 @@ managed_packages = ['openvpn', 'easy-rsa'] name = _('OpenVPN') +icon_filename = 'openvpn' + short_description = _('Virtual Private Network') description = [ @@ -79,7 +81,7 @@ class OpenVPNApp(app_module.App): link=reverse_lazy('openvpn:profile')) shortcut = frontpage.Shortcut( 'shortcut-openvpn', name, short_description=short_description, - icon='openvpn', description=description + [download_profile], + icon=icon_filename, description=description + [download_profile], configure_url=reverse_lazy('openvpn:index'), login_required=True) self.add(shortcut) diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index c3cfc4919..83ad90c3c 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -41,6 +41,8 @@ managed_packages = ['privoxy'] name = _('Privoxy') +icon_filename = 'privoxy' + short_description = _('Web Proxy') description = [ @@ -80,7 +82,7 @@ class PrivoxyApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-privoxy', name, short_description=short_description, - icon='privoxy', description=description, + icon=icon_filename, description=description, configure_url=reverse_lazy('privoxy:index'), login_required=True) self.add(shortcut) @@ -115,7 +117,7 @@ class PrivoxyAppView(AppView): name = name description = description manual_page = manual_page - + icon_filename = icon_filename def diagnose(): """Run diagnostics and return the results.""" diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index dcdbdcf4a..38115cfba 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -44,6 +44,8 @@ managed_paths = [pathlib.Path('/var/lib/quassel/')] name = _('Quassel') +icon_filename = 'quassel' + short_description = _('IRC Client') description = [ @@ -88,7 +90,7 @@ class QuasselApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-quassel', name, short_description=short_description, - icon='quassel', description=description, + icon=icon_filename, description=description, configure_url=reverse_lazy('quassel:index'), clients=clients, login_required=True) self.add(shortcut) diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index bf7315f98..6f02ff45c 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -44,6 +44,8 @@ managed_packages = ['radicale', 'uwsgi', 'uwsgi-plugin-python3'] name = _('Radicale') +icon_filename = 'radicale' + short_description = _('Calendar and Addressbook') description = [ @@ -88,7 +90,7 @@ class RadicaleApp(app_module.App): shortcut = frontpage.Shortcut('shortcut-radicale', name, short_description=short_description, - icon='radicale', url='/radicale/', + icon=icon_filename, url='/radicale/', clients=clients, login_required=True) self.add(shortcut) diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index fcc207ea6..dd476f916 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -34,6 +34,8 @@ managed_packages = ['sqlite3', 'roundcube', 'roundcube-sqlite3'] name = _('Roundcube') +icon_filename = 'roundcube' + short_description = _('Email Client') description = [ @@ -78,7 +80,8 @@ class RoundcubeApp(app_module.App): shortcut = frontpage.Shortcut('shortcut-roundcube', name, short_description=short_description, - icon='roundcube', url='/roundcube/', + icon=icon_filename, + url='/roundcube/', clients=clients, login_required=True) self.add(shortcut) diff --git a/plinth/modules/searx/__init__.py b/plinth/modules/searx/__init__.py index 1b1b3012d..38c562a0e 100644 --- a/plinth/modules/searx/__init__.py +++ b/plinth/modules/searx/__init__.py @@ -39,6 +39,8 @@ managed_packages = ['searx', 'uwsgi', 'uwsgi-plugin-python3'] name = _('Searx') +icon_filename = 'searx' + short_description = _('Web Search') description = [ @@ -69,7 +71,7 @@ class SearxApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-searx', name, short_description=short_description, - icon='searx', url='/searx/', clients=clients, + icon=icon_filename, url='/searx/', clients=clients, login_required=(not is_public_access_enabled()), allowed_groups=[group[0]]) self.add(shortcut) diff --git a/plinth/modules/shadowsocks/__init__.py b/plinth/modules/shadowsocks/__init__.py index 4051abcdf..213388f51 100644 --- a/plinth/modules/shadowsocks/__init__.py +++ b/plinth/modules/shadowsocks/__init__.py @@ -34,6 +34,8 @@ version = 1 name = _('Shadowsocks') +icon_filename = 'shadowsocks' + short_description = _('Socks5 Proxy') managed_services = ['shadowsocks-libev-local@freedombox'] @@ -74,7 +76,7 @@ class ShadowsocksApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-shadowsocks', name, short_description=short_description, - icon='shadowsocks', description=description, + icon=icon_filename, description=description, configure_url=reverse_lazy('shadowsocks:index'), login_required=True) self.add(shortcut) diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index 273bf6a0f..ad7f1463b 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -39,6 +39,8 @@ managed_packages = ['syncthing'] name = _('Syncthing') +icon_filename = 'syncthing' + short_description = _('File Synchronization') description = [ @@ -80,7 +82,7 @@ class SyncthingApp(app_module.App): shortcut = frontpage.Shortcut('shortcut-syncthing', name, short_description=short_description, - icon='syncthing', url='/syncthing/', + icon=icon_filename, url='/syncthing/', clients=clients, login_required=True, allowed_groups=[group[0]]) self.add(shortcut) diff --git a/plinth/modules/tahoe/__init__.py b/plinth/modules/tahoe/__init__.py index ba2a1a66e..9983845b1 100644 --- a/plinth/modules/tahoe/__init__.py +++ b/plinth/modules/tahoe/__init__.py @@ -42,6 +42,8 @@ managed_packages = ['tahoe-lafs'] name = _('Tahoe-LAFS') +icon_filename = 'tahoe-lafs' + short_description = _('Distributed File Storage') port_forwarding_info = [ @@ -76,7 +78,7 @@ class TahoeApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-tahoe', name, short_description=short_description, - icon='tahoe-lafs', url=None, login_required=True) + icon=icon_filename, url=None, login_required=True) self.add(shortcut) firewall = Firewall('firewall-tahoe', name, ports=['tahoe-plinth'], diff --git a/plinth/modules/tahoe/views.py b/plinth/modules/tahoe/views.py index 185a28296..c30bb3731 100644 --- a/plinth/modules/tahoe/views.py +++ b/plinth/modules/tahoe/views.py @@ -57,6 +57,7 @@ class TahoeAppView(AppView): description = tahoe.description diagnostics_module_name = 'tahoe' port_forwarding_info = tahoe.port_forwarding_info + icon_filename = tahoe.icon_filename def dispatch(self, request, *args, **kwargs): if not tahoe.is_setup(): diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index 466f3a578..43b90cfcf 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -40,6 +40,8 @@ managed_packages = ['transmission-daemon'] name = _('Transmission') +icon_filename = 'transmission' + short_description = _('BitTorrent Web Client') description = [ @@ -74,7 +76,7 @@ class TransmissionApp(app_module.App): shortcut = frontpage.Shortcut('shortcut-transmission', name, short_description=short_description, - icon='transmission', url='/transmission', + icon=icon_filename, url='/transmission', clients=clients, login_required=True, allowed_groups=[group[0]]) self.add(shortcut) diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index 9fe10b9a6..7b77faec6 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -42,6 +42,8 @@ managed_packages = [ name = _('Tiny Tiny RSS') +icon_filename = 'ttrss' + short_description = _('News Feed Reader') description = [ @@ -81,7 +83,7 @@ class TTRSSApp(app_module.App): shortcut = frontpage.Shortcut('shortcut-ttrss', name, short_description=short_description, - icon='ttrss', url='/tt-rss', + icon=icon_filename, url='/tt-rss', clients=clients, login_required=True, allowed_groups=[group[0]]) self.add(shortcut) diff --git a/plinth/templates/setup.html b/plinth/templates/setup.html index 03f75ca67..490e91da4 100644 --- a/plinth/templates/setup.html +++ b/plinth/templates/setup.html @@ -35,8 +35,9 @@ {% endblock %} {% block content %} - + {% if setup_helper.module.icon_filename %} +
From eb83e0001109a930d45b32d5992e1b4508a1b16a Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Mon, 4 Nov 2019 15:57:38 +0530 Subject: [PATCH 05/42] fix formatting issues Reviewed-by: James Valleroy --- actions/auth-pubtkt | 9 +- actions/config | 4 +- actions/diaspora | 4 +- actions/firewall | 9 +- actions/gitweb | 7 +- actions/mediawiki | 4 +- actions/minetest | 2 - actions/monkeysphere | 12 +- actions/openvpn | 16 +- actions/packages | 10 +- actions/pagekite | 25 ++- actions/power | 1 - actions/radicale | 4 +- actions/searx | 4 +- actions/shadowsocks | 11 +- actions/sharing | 9 +- actions/ssh | 4 +- actions/sshfs | 8 +- actions/tahoe-lafs | 9 +- actions/timezone-change | 1 - actions/tor | 4 +- actions/ttrss | 4 +- actions/users | 4 +- .../step_definitions/application.py | 38 +++- .../step_definitions/interface.py | 5 +- functional_tests/step_definitions/site.py | 8 +- functional_tests/support/site.py | 18 +- plinth/action_utils.py | 8 +- plinth/app.py | 1 - plinth/context_processors.py | 1 - plinth/daemon.py | 1 - plinth/dbus.py | 1 - plinth/forms.py | 12 +- plinth/kvstore.py | 1 - plinth/middleware.py | 7 +- plinth/migrations/0001_initial.py | 4 +- .../0003_merge_firstboot_completed_fields.py | 5 +- plinth/migrations/0004_userprofile.py | 19 +- plinth/modules/apache/__init__.py | 6 +- plinth/modules/apache/components.py | 2 - plinth/modules/apache/urls.py | 4 +- plinth/modules/api/views.py | 5 +- plinth/modules/avahi/__init__.py | 7 +- plinth/modules/backups/__init__.py | 5 +- plinth/modules/backups/api.py | 6 - plinth/modules/backups/decorators.py | 1 - plinth/modules/backups/repository.py | 9 +- plinth/modules/backups/tests/test_api.py | 3 - plinth/modules/cockpit/utils.py | 4 +- plinth/modules/config/__init__.py | 4 +- plinth/modules/config/forms.py | 21 +- plinth/modules/diagnostics/urls.py | 2 - plinth/modules/diaspora/__init__.py | 12 +- plinth/modules/diaspora/manifest.py | 7 +- plinth/modules/dynamicdns/__init__.py | 7 +- plinth/modules/dynamicdns/forms.py | 31 ++- plinth/modules/dynamicdns/views.py | 23 +-- .../modules/firewall/tests/test_components.py | 1 - plinth/modules/firewall/urls.py | 2 - plinth/modules/first_boot/middleware.py | 2 - plinth/modules/gitweb/__init__.py | 10 +- plinth/modules/gitweb/forms.py | 6 +- plinth/modules/gitweb/tests/test_gitweb.py | 5 +- plinth/modules/i2p/__init__.py | 9 +- plinth/modules/i2p/helpers.py | 9 +- plinth/modules/i2p/resources.py | 190 ++++++++---------- plinth/modules/i2p/views.py | 9 +- plinth/modules/ikiwiki/__init__.py | 3 +- plinth/modules/ikiwiki/forms.py | 11 +- plinth/modules/ikiwiki/manifest.py | 7 +- plinth/modules/jsxc/__init__.py | 9 +- plinth/modules/letsencrypt/components.py | 11 +- plinth/modules/matrixsynapse/__init__.py | 5 +- plinth/modules/mediawiki/__init__.py | 1 - plinth/modules/minetest/__init__.py | 4 +- plinth/modules/minetest/forms.py | 6 +- plinth/modules/mldonkey/__init__.py | 9 +- plinth/modules/mldonkey/manifest.py | 18 +- plinth/modules/mldonkey/urls.py | 12 +- plinth/modules/monkeysphere/urls.py | 2 - plinth/modules/mumble/manifest.py | 6 +- plinth/modules/names/urls.py | 2 - plinth/modules/networks/__init__.py | 8 +- plinth/modules/networks/forms.py | 125 +++++------- plinth/modules/networks/urls.py | 8 +- plinth/modules/openvpn/forms.py | 5 +- plinth/modules/openvpn/urls.py | 2 - .../modules/pagekite/tests/test_pagekite.py | 36 ++-- plinth/modules/power/urls.py | 2 - plinth/modules/radicale/__init__.py | 7 +- plinth/modules/radicale/manifest.py | 3 +- plinth/modules/roundcube/__init__.py | 3 +- plinth/modules/searx/__init__.py | 3 +- plinth/modules/security/forms.py | 1 - plinth/modules/security/manifest.py | 7 +- plinth/modules/security/urls.py | 2 - plinth/modules/security/views.py | 14 +- plinth/modules/shadowsocks/forms.py | 11 +- plinth/modules/snapshot/__init__.py | 4 +- plinth/modules/snapshot/forms.py | 7 +- plinth/modules/snapshot/views.py | 6 +- plinth/modules/ssh/manifest.py | 6 +- plinth/modules/sso/__init__.py | 5 +- plinth/modules/sso/urls.py | 4 +- plinth/modules/sso/views.py | 4 +- plinth/modules/storage/__init__.py | 5 +- plinth/modules/storage/tests/test_storage.py | 2 - plinth/modules/syncthing/urls.py | 12 +- plinth/modules/tahoe/__init__.py | 8 +- plinth/modules/tahoe/errors.py | 1 - plinth/modules/tor/forms.py | 64 +++--- plinth/modules/tor/tests/test_tor.py | 2 - plinth/modules/tor/urls.py | 2 - plinth/modules/tor/utils.py | 4 +- plinth/modules/transmission/views.py | 4 +- plinth/modules/upgrades/manifest.py | 7 +- plinth/modules/upgrades/urls.py | 2 - plinth/modules/users/forms.py | 18 +- plinth/modules/users/tests/test_actions.py | 4 +- plinth/modules/users/views.py | 1 - plinth/network.py | 52 +++-- plinth/package.py | 2 - plinth/setup.py | 3 - plinth/tests/test_context_processors.py | 3 +- plinth/tests/test_custom_shortcuts.py | 4 +- plinth/tests/test_kvstore.py | 12 +- plinth/tests/test_middleware.py | 2 - plinth/tests/test_network.py | 1 - plinth/tests/test_templatetags.py | 6 +- plinth/tests/test_utils.py | 5 +- plinth/urls.py | 5 +- plinth/web_framework.py | 1 - setup.py | 7 +- vagrant-scripts/plinth-user-permissions.py | 4 +- 134 files changed, 598 insertions(+), 720 deletions(-) diff --git a/actions/auth-pubtkt b/actions/auth-pubtkt index c24492315..a014eced2 100755 --- a/actions/auth-pubtkt +++ b/actions/auth-pubtkt @@ -109,8 +109,9 @@ def subcommand_generate_ticket(arguments): pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, fil.read().encode()) valid_until = minutes_from_now(12 * 60) grace_period = minutes_from_now(11 * 60) - print(create_ticket(pkey, uid, valid_until, tokens=tokens, - graceperiod=grace_period)) + print( + create_ticket(pkey, uid, valid_until, tokens=tokens, + graceperiod=grace_period)) def minutes_from_now(minutes): @@ -120,8 +121,8 @@ def minutes_from_now(minutes): def seconds_from_now(seconds): """Return a timestamp at the given number of seconds from now.""" - return ( - datetime.datetime.now() + datetime.timedelta(0, seconds)).timestamp() + return (datetime.datetime.now() + + datetime.timedelta(0, seconds)).timestamp() def main(): diff --git a/actions/config b/actions/config index ae2fa44a9..0aba395b2 100755 --- a/actions/config +++ b/actions/config @@ -66,8 +66,8 @@ def subcommand_reset_home_page(_): config_file = FREEDOMBOX_APACHE_CONFIG default_path = 'plinth' - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Httpd/lens', 'Httpd.lns') aug.set('/augeas/load/Httpd/incl[last() + 1]', config_file) aug.load() diff --git a/actions/diaspora b/actions/diaspora index 0a915c9b2..eb435a5f2 100755 --- a/actions/diaspora +++ b/actions/diaspora @@ -72,8 +72,8 @@ def set_domain_name(domain_name): # {'url': domain_name}) # Manually changing the domain name in the conf files. conf_file = '/etc/diaspora.conf' - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) # lens for shell-script config file aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') diff --git a/actions/firewall b/actions/firewall index 0fced7220..a7d00b85d 100755 --- a/actions/firewall +++ b/actions/firewall @@ -62,8 +62,9 @@ def parse_arguments(): # Add a service add_service = subparsers.add_parser('add-service', help='Add a service') add_service.add_argument('service', help='Name of the service to add') - add_service.add_argument( - '--zone', help='Zone to which service is to be added', required=True) + add_service.add_argument('--zone', + help='Zone to which service is to be added', + required=True) # Remove a service status remove_service = subparsers.add_parser('remove-service', @@ -111,8 +112,8 @@ def _flush_iptables_rules(): def set_firewall_backend(backend): """Set FirewallBackend attribute to the specified string.""" conf_file = '/etc/firewalld/firewalld.conf' - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) # lens for shell-script config file aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') diff --git a/actions/gitweb b/actions/gitweb index 7d55d5995..237bac125 100755 --- a/actions/gitweb +++ b/actions/gitweb @@ -38,7 +38,6 @@ logger = logging.getLogger(__name__) class ValidateRepoName(argparse.Action): """Validate a repository name and add .git extension if necessary.""" - def __call__(self, parser, namespace, values, option_string=None): RepositoryValidator()(values) if not values.endswith('.git'): @@ -48,7 +47,6 @@ class ValidateRepoName(argparse.Action): class ValidateRepoUrl(argparse.Action): """Validate a repository URL.""" - def __call__(self, parser, namespace, values, option_string=None): RepositoryValidator(input_should_be='url')(values) setattr(namespace, self.dest, values) @@ -359,8 +357,9 @@ def subcommand_repo_info(arguments): print( json.dumps( - dict(name=arguments.name[:-4], description=_get_repo_description( - arguments.name), owner=_get_repo_owner(arguments.name), + dict(name=arguments.name[:-4], + description=_get_repo_description(arguments.name), + owner=_get_repo_owner(arguments.name), access=_get_access_status(arguments.name)))) diff --git a/actions/mediawiki b/actions/mediawiki index fe2306bf1..4f0e45a0c 100755 --- a/actions/mediawiki +++ b/actions/mediawiki @@ -48,8 +48,8 @@ def parse_arguments(): help_private_mode = 'Enable/Disable/Status private mode.' private_mode = subparsers.add_parser('private-mode', help=help_private_mode) - private_mode.add_argument('command', choices=('enable', 'disable', - 'status'), + private_mode.add_argument('command', + choices=('enable', 'disable', 'status'), help=help_private_mode) change_password = subparsers.add_parser('change-password', diff --git a/actions/minetest b/actions/minetest index b7db3a51b..3e3f52146 100755 --- a/actions/minetest +++ b/actions/minetest @@ -15,7 +15,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Configuration helper for Minetest server. """ @@ -25,7 +24,6 @@ import augeas from plinth import action_utils - CONFIG_FILE = '/etc/minetest/minetest.conf' AUG_PATH = '/files' + CONFIG_FILE + '/.anon' diff --git a/actions/monkeysphere b/actions/monkeysphere index c09c50514..badaab5c3 100755 --- a/actions/monkeysphere +++ b/actions/monkeysphere @@ -150,9 +150,8 @@ def get_monkeysphere_keys(key_id=None): """Return the list of keys imported into monkeysphere.""" try: key_ids = [] if not key_id else [key_id] - output = subprocess.check_output( - ['monkeysphere-host', 'show-keys'] + key_ids, - stderr=subprocess.DEVNULL) + output = subprocess.check_output(['monkeysphere-host', 'show-keys'] + + key_ids, stderr=subprocess.DEVNULL) except subprocess.CalledProcessError: # no keys available return {} @@ -288,9 +287,10 @@ def subcommand_host_publish_key(arguments): # setting TMPDIR as workaround for Debian bug #656750 proc = subprocess.Popen( ['monkeysphere-host', 'publish-keys'] + arguments.key_ids, - stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=dict( - os.environ, TMPDIR='/var/lib/monkeysphere/authentication/tmp/', - MONKEYSPHERE_PROMPT='false')) + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + env=dict(os.environ, + TMPDIR='/var/lib/monkeysphere/authentication/tmp/', + MONKEYSPHERE_PROMPT='false')) output, error = proc.communicate() output, error = output.decode(), error.decode() if proc.returncode != 0: diff --git a/actions/openvpn b/actions/openvpn index 720d5cc8d..ccac2d084 100755 --- a/actions/openvpn +++ b/actions/openvpn @@ -177,8 +177,8 @@ def subcommand_upgrade(_): 'renewed/private_by_serial', 'renewed/reqs_by_serial' ] for dir_name in directories_to_create: - os.makedirs( - os.path.join(pki_dir, dir_name), mode=0o700, exist_ok=True) + os.makedirs(os.path.join(pki_dir, dir_name), mode=0o700, + exist_ok=True) def _move_by_file_extension(file_extension, directory, excluded=None): excluded = excluded or [] @@ -217,7 +217,6 @@ def _write_server_config(): def _setup_firewall(): """Add TUN device to internal zone in firewalld.""" - def _configure_interface(interface, operation): """Add or remove an interface into internal zone.""" command = [ @@ -299,9 +298,10 @@ def subcommand_get_profile(arguments): user_key_string = _read_file(user_key) ca_string = _read_file(CA_CERTIFICATE_PATH) - profile = CLIENT_CONFIGURATION.format( - ca=ca_string, cert=user_certificate_string, key=user_key_string, - remote=remote_server) + profile = CLIENT_CONFIGURATION.format(ca=ca_string, + cert=user_certificate_string, + key=user_key_string, + remote=remote_server) print(profile) @@ -326,8 +326,8 @@ def _is_non_empty_file(filepath): def load_augeas(): """Initialize Augeas.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) # shell-script config file lens aug.set('/augeas/load/Simplevars/lens', 'Simplevars.lns') diff --git a/actions/packages b/actions/packages index 887e70162..9855d4085 100755 --- a/actions/packages +++ b/actions/packages @@ -349,8 +349,9 @@ def _download_packages(packages): return downloaded_files -def _get_conffile_hashes_from_downloaded_files( - packages, downloaded_files, status_hashes, mismatched_hashes): +def _get_conffile_hashes_from_downloaded_files(packages, downloaded_files, + status_hashes, + mismatched_hashes): """Retrieve the conffile hashes from downloaded .deb files.""" new_hashes = defaultdict(dict) new_versions = defaultdict(lambda: None) @@ -369,8 +370,9 @@ def _get_conffile_hashes_from_downloaded_files( return new_hashes, new_versions -def _get_conffile_hashes_from_downloaded_file( - packages, downloaded_file, status_hashes, mismatched_hashes): +def _get_conffile_hashes_from_downloaded_file(packages, downloaded_file, + status_hashes, + mismatched_hashes): """Retrieve the conffile hashes from a single downloaded .deb file.""" deb_file = apt_inst.DebFile(downloaded_file) diff --git a/actions/pagekite b/actions/pagekite index 36d095699..19477a9ca 100755 --- a/actions/pagekite +++ b/actions/pagekite @@ -31,13 +31,18 @@ from plinth.modules.pagekite import utils aug = None PATHS = { - 'service_on': os.path.join(utils.CONF_PATH, '*', 'service_on', '*'), - 'kitename': os.path.join(utils.CONF_PATH, '10_account.rc', 'kitename'), - 'kitesecret': os.path.join(utils.CONF_PATH, '10_account.rc', 'kitesecret'), - 'abort_not_configured': os.path.join(utils.CONF_PATH, '10_account.rc', - 'abort_not_configured'), - 'defaults': os.path.join(utils.CONF_PATH, '20_frontends.rc', 'defaults'), - 'frontend': os.path.join(utils.CONF_PATH, '20_frontends.rc', 'frontend'), + 'service_on': + os.path.join(utils.CONF_PATH, '*', 'service_on', '*'), + 'kitename': + os.path.join(utils.CONF_PATH, '10_account.rc', 'kitename'), + 'kitesecret': + os.path.join(utils.CONF_PATH, '10_account.rc', 'kitesecret'), + 'abort_not_configured': + os.path.join(utils.CONF_PATH, '10_account.rc', 'abort_not_configured'), + 'defaults': + os.path.join(utils.CONF_PATH, '20_frontends.rc', 'defaults'), + 'frontend': + os.path.join(utils.CONF_PATH, '20_frontends.rc', 'frontend'), } @@ -50,9 +55,9 @@ def parse_arguments(): subparsers.add_parser('start-and-enable', help='Enable PageKite service') subparsers.add_parser('stop-and-disable', help='Disable PageKite service') subparsers.add_parser('restart', help='Restart PageKite service') - subparsers.add_parser('is-disabled', - help=('Whether PageKite is disabled in the file ' - '/etc/pagekite.d/10_accounts.rc')) + subparsers.add_parser( + 'is-disabled', help=('Whether PageKite is disabled in the file ' + '/etc/pagekite.d/10_accounts.rc')) # Frontend subparsers.add_parser('get-frontend', help='Get pagekite frontend') diff --git a/actions/power b/actions/power index 6229b594a..58992dc68 100755 --- a/actions/power +++ b/actions/power @@ -15,7 +15,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Configuration helper for power controls. """ diff --git a/actions/radicale b/actions/radicale index 94864f9c9..7e5c4f53d 100755 --- a/actions/radicale +++ b/actions/radicale @@ -132,8 +132,8 @@ def subcommand_fix_collections(_): def load_augeas(): """Initialize Augeas.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) # shell-script config file lens aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') diff --git a/actions/searx b/actions/searx index 8367b061c..d08f314b5 100755 --- a/actions/searx +++ b/actions/searx @@ -81,8 +81,8 @@ def _update_uwsgi_configuration(): uwsgi 2.0.15-debian crashes when trying to autoload. """ - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/inifile/lens', 'Puppet.lns') aug.set('/augeas/load/inifile/incl[last() + 1]', UWSGI_FILE) aug.load() diff --git a/actions/shadowsocks b/actions/shadowsocks index 670e09ca3..0e5dc1048 100755 --- a/actions/shadowsocks +++ b/actions/shadowsocks @@ -35,12 +35,11 @@ def parse_arguments(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') - subparsers.add_parser('setup', - help='Perform initial setup steps') - subparsers.add_parser( - 'get-config', help='Read and print JSON config to stdout') - subparsers.add_parser( - 'merge-config', help='Merge JSON config from stdin with existing') + subparsers.add_parser('setup', help='Perform initial setup steps') + subparsers.add_parser('get-config', + help='Read and print JSON config to stdout') + subparsers.add_parser('merge-config', + help='Merge JSON config from stdin with existing') subparsers.required = True return parser.parse_args() diff --git a/actions/sharing b/actions/sharing index d40bd6319..2aa7390b4 100755 --- a/actions/sharing +++ b/actions/sharing @@ -58,8 +58,8 @@ def parse_arguments(): def load_augeas(): """Initialize augeas for this app's configuration file.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Httpd/lens', 'Httpd.lns') aug.set('/augeas/load/Httpd/incl[last() + 1]', APACHE_CONFIGURATION) aug.load() @@ -191,8 +191,9 @@ def _list(aug=None): """Must contain the line 'Require all granted'.""" require = location + '//directive["Require"]' return bool(aug.match(require)) and aug.get( - require + '/arg[1]') == 'all' and aug.get( - require + '/arg[2]') == 'granted' + require + + '/arg[1]') == 'all' and aug.get(require + + '/arg[2]') == 'granted' for share in shares: if share['name'] == name: diff --git a/actions/ssh b/actions/ssh index 1c3035304..8c976364f 100755 --- a/actions/ssh +++ b/actions/ssh @@ -117,8 +117,8 @@ def subcommand_set_keys(arguments): def _load_augeas(): """Initialize augeas for this app's configuration file.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Sshd/lens', 'Sshd.lns') aug.set('/augeas/load/Sshd/incl[last() + 1]', '/etc/ssh/sshd_config') aug.load() diff --git a/actions/sshfs b/actions/sshfs index 5d5da431f..c348fc58d 100755 --- a/actions/sshfs +++ b/actions/sshfs @@ -96,11 +96,11 @@ def validate_mountpoint(mountpoint): """Check that the folder is empty, and create it if it doesn't exist""" if os.path.exists(mountpoint): if _is_mounted(mountpoint): - raise AlreadyMountedError( - 'Mountpoint %s already mounted' % mountpoint) + raise AlreadyMountedError('Mountpoint %s already mounted' % + mountpoint) if os.listdir(mountpoint) or not os.path.isdir(mountpoint): - raise ValueError( - 'Mountpoint %s is not an empty directory' % mountpoint) + raise ValueError('Mountpoint %s is not an empty directory' % + mountpoint) else: os.makedirs(mountpoint) diff --git a/actions/tahoe-lafs b/actions/tahoe-lafs index 5630d05a0..0036b030c 100755 --- a/actions/tahoe-lafs +++ b/actions/tahoe-lafs @@ -114,8 +114,8 @@ def subcommand_setup(arguments): def subcommand_autostart(_): """Automatically start all introducers and storage nodes on system startup. """ - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') aug.set('/augeas/load/Shellvars/incl[last() + 1]', DEFAULT_FILE) aug.load() @@ -157,8 +157,9 @@ def subcommand_create_storage_node(_): if not os.path.exists(os.path.join(tahoe_home, storage_node_name)): subprocess.check_call([ 'tahoe', 'create-node', '--nickname=\"storage_node\"', - '--webport=1234', '--hostname={}'.format( - get_configured_domain_name()), storage_node_name + '--webport=1234', + '--hostname={}'.format(get_configured_domain_name()), + storage_node_name ]) with open( os.path.join(tahoe_home, introducer_name, 'private', diff --git a/actions/timezone-change b/actions/timezone-change index cef4d764f..062299aa5 100755 --- a/actions/timezone-change +++ b/actions/timezone-change @@ -15,7 +15,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Set time zones with timedatectl (requires root permission). """ diff --git a/actions/tor b/actions/tor index 3690f3275..a66bba2ec 100755 --- a/actions/tor +++ b/actions/tor @@ -529,8 +529,8 @@ def _update_ports(): def augeas_load(): """Initialize Augeas.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Tor/lens', 'Tor.lns') aug.set('/augeas/load/Tor/incl[last() + 1]', '/etc/tor/instances/plinth/torrc') diff --git a/actions/ttrss b/actions/ttrss index ec4bb7a05..362067abc 100755 --- a/actions/ttrss +++ b/actions/ttrss @@ -133,8 +133,8 @@ def _run_as_postgres(command, stdin=None, stdout=None): def load_augeas(): """Initialize Augeas.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') aug.set('/augeas/load/Shellvars/incl[last() + 1]', DEFAULT_FILE) aug.set('/augeas/load/Phpvars/lens', 'Phpvars.lns') diff --git a/actions/users b/actions/users index e35ad320c..605b91156 100755 --- a/actions/users +++ b/actions/users @@ -210,8 +210,8 @@ def configure_ldapscripts(): # modify a copy of the config file shutil.copy('/etc/ldapscripts/ldapscripts.conf', LDAPSCRIPTS_CONF) - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') aug.set('/augeas/load/Shellvars/incl[last() + 1]', LDAPSCRIPTS_CONF) aug.load() diff --git a/functional_tests/step_definitions/application.py b/functional_tests/step_definitions/application.py index b5cbc1457..22db2c979 100644 --- a/functional_tests/step_definitions/application.py +++ b/functional_tests/step_definitions/application.py @@ -107,8 +107,7 @@ def select_domain_name(browser, app_name, domain_name): @given('the shadowsocks application is configured') def configure_shadowsocks(browser): - application.configure_shadowsocks(browser, 'example.com', - 'fakepassword') + application.configure_shadowsocks(browser, 'example.com', 'fakepassword') @when( @@ -128,8 +127,8 @@ def assert_shadowsocks_configuration(browser, server, password): password) == application.shadowsocks_get_configuration(browser) -@when( - parsers.parse('I modify the maximum file size of coquelicot to {size:d}')) +@when(parsers.parse('I modify the maximum file size of coquelicot to {size:d}') + ) def modify_max_file_size(browser, size): application.modify_max_file_size(browser, size) @@ -372,38 +371,55 @@ def tahoe_given_add_introducer(browser, domain): def tahoe_remove_introducer(browser, domain): application.tahoe_remove_introducer(browser, domain) -@given('the access rights are set to "only the owner can view or make changes"') + +@given('the access rights are set to "only the owner can view or make changes"' + ) def radicale_given_owner_only(browser): application.radicale_set_access_rights(browser, 'owner_only') -@given('the access rights are set to "any user can view, but only the owner can make changes"') + +@given( + 'the access rights are set to "any user can view, but only the owner can make changes"' +) def radicale_given_owner_write(browser): application.radicale_set_access_rights(browser, 'owner_write') + @given('the access rights are set to "any user can view or make changes"') def radicale_given_authenticated(browser): application.radicale_set_access_rights(browser, 'authenticated') -@when('I change the access rights to "only the owner can view or make changes"') + +@when('I change the access rights to "only the owner can view or make changes"' + ) def radicale_set_owner_only(browser): application.radicale_set_access_rights(browser, 'owner_only') -@when('I change the access rights to "any user can view, but only the owner can make changes"') + +@when( + 'I change the access rights to "any user can view, but only the owner can make changes"' +) def radicale_set_owner_write(browser): application.radicale_set_access_rights(browser, 'owner_write') + @when('I change the access rights to "any user can view or make changes"') def radicale_set_authenticated(browser): application.radicale_set_access_rights(browser, 'authenticated') + @then('the access rights should be "only the owner can view or make changes"') def radicale_check_owner_only(browser): assert application.radicale_get_access_rights(browser) == 'owner_only' -@then('the access rights should be "any user can view, but only the owner can make changes"') + +@then( + 'the access rights should be "any user can view, but only the owner can make changes"' +) def radicale_check_owner_write(browser): assert application.radicale_get_access_rights(browser) == 'owner_write' + @then('the access rights should be "any user can view or make changes"') def radicale_check_authenticated(browser): assert application.radicale_get_access_rights(browser) == 'authenticated' @@ -451,8 +467,8 @@ def app_visible_on_front_page(browser, app_name): assert len(shortcuts) == 1 -@then( - parsers.parse('{app_name:w} app should not be visible on the front page')) +@then(parsers.parse('{app_name:w} app should not be visible on the front page') + ) def app_not_visible_on_front_page(browser, app_name): shortcuts = application.find_on_front_page(browser, app_name) assert len(shortcuts) == 0 diff --git a/functional_tests/step_definitions/interface.py b/functional_tests/step_definitions/interface.py index 916e07532..257599cea 100644 --- a/functional_tests/step_definitions/interface.py +++ b/functional_tests/step_definitions/interface.py @@ -19,7 +19,6 @@ from pytest_bdd import given, parsers, then, when from support import config, interface - default_url = config['DEFAULT']['url'] @@ -52,8 +51,8 @@ def new_user_does_not_exist(browser, name): @given(parsers.parse('the user {name:w} exists')) def test_user_exists(browser, name): interface.nav_to_module(browser, 'users') - user_link = browser.find_link_by_href( - '/plinth/sys/users/' + name + '/edit/') + user_link = browser.find_link_by_href('/plinth/sys/users/' + name + + '/edit/') if not user_link: create_user(browser, name, 'secret123') diff --git a/functional_tests/step_definitions/site.py b/functional_tests/step_definitions/site.py index 100c0a269..5ede8366f 100644 --- a/functional_tests/step_definitions/site.py +++ b/functional_tests/step_definitions/site.py @@ -61,8 +61,9 @@ def verify_upload_password(browser, password): 'I upload the sample local file to coquelicot with password {password:w}' )) def coquelicot_upload_file(browser, sample_local_file, password): - url = site.upload_file_to_coquelicot( - browser, sample_local_file['file_path'], password) + url = site.upload_file_to_coquelicot(browser, + sample_local_file['file_path'], + password) sample_local_file['upload_url'] = url @@ -214,7 +215,8 @@ def syncthing_folder_not_present(browser, folder_name): @given( parsers.parse( - 'folder {folder_path:S} is present as syncthing folder {folder_name:w}')) + 'folder {folder_path:S} is present as syncthing folder {folder_name:w}' + )) def syncthing_folder_present(browser, folder_name, folder_path): if not site.syncthing_folder_is_present(browser, folder_name): site.syncthing_add_folder(browser, folder_name, folder_path) diff --git a/functional_tests/support/site.py b/functional_tests/support/site.py index 399853f9b..14632073e 100644 --- a/functional_tests/support/site.py +++ b/functional_tests/support/site.py @@ -294,8 +294,8 @@ def transmission_remove_all_torrents(browser): def transmission_upload_sample_torrent(browser): """Upload a sample torrent into transmission.""" browser.visit(config['DEFAULT']['url'] + '/transmission') - file_path = os.path.join( - os.path.dirname(__file__), '..', 'data', 'sample.torrent') + file_path = os.path.join(os.path.dirname(__file__), '..', 'data', + 'sample.torrent') browser.click_link_by_id('toolbar-open') eventually(browser.is_element_not_present_by_css, args=['#upload-container[style="display: none;"]']) @@ -396,9 +396,8 @@ def deluge_remove_all_torrents(browser): browser.find_by_id('remove').first.click() # Remove window shows up - assert eventually( - lambda: _deluge_get_active_window_title(browser) == 'Remove Torrent' - ) + assert eventually(lambda: _deluge_get_active_window_title(browser) == + 'Remove Torrent') _deluge_click_active_window_button(browser, 'Remove With Data') @@ -434,8 +433,8 @@ def deluge_upload_sample_torrent(browser): eventually( lambda: _deluge_get_active_window_title(browser) == 'Add Torrents') - file_path = os.path.join( - os.path.dirname(__file__), '..', 'data', 'sample.torrent') + file_path = os.path.join(os.path.dirname(__file__), '..', 'data', + 'sample.torrent') if browser.find_by_id('fileUploadForm'): # deluge-web 2.x browser.attach_file('file', file_path) @@ -443,9 +442,8 @@ def deluge_upload_sample_torrent(browser): browser.find_by_css('button.x-deluge-add-file').first.click() # Add from file window appears - eventually( - lambda: _deluge_get_active_window_title(browser) == 'Add from File' - ) + eventually(lambda: _deluge_get_active_window_title(browser) == + 'Add from File') # Attach file browser.attach_file('file', file_path) diff --git a/plinth/action_utils.py b/plinth/action_utils.py index c2f2e725d..aa5a2b7d8 100644 --- a/plinth/action_utils.py +++ b/plinth/action_utils.py @@ -211,7 +211,6 @@ def webserver_disable(name, kind='config', apply_changes=True): class WebserverChange(object): """Context to restart/reload Apache after configuration changes.""" - def __init__(self): """Initialize the context object state.""" self.actions_required = set() @@ -425,9 +424,10 @@ def diagnose_url_on_all(url, **kwargs): def diagnose_netcat(host, port, input='', negate=False): """Run a diagnostic using netcat.""" try: - process = subprocess.Popen( - ['nc', host, str(port)], stdin=subprocess.PIPE, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) + process = subprocess.Popen(['nc', host, str(port)], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) process.communicate(input=input.encode()) if process.returncode != 0: result = 'failed' diff --git a/plinth/app.py b/plinth/app.py index 085dc7dad..f23ed4f85 100644 --- a/plinth/app.py +++ b/plinth/app.py @@ -114,7 +114,6 @@ class Component: def enable(self): """Run operations to enable the component.""" - def disable(self): """Run operations to disable the component.""" diff --git a/plinth/context_processors.py b/plinth/context_processors.py index 39f82ed21..3af5d73a0 100644 --- a/plinth/context_processors.py +++ b/plinth/context_processors.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Django context processors to provide common data to templates. """ diff --git a/plinth/daemon.py b/plinth/daemon.py index 604502d64..6fc733461 100644 --- a/plinth/daemon.py +++ b/plinth/daemon.py @@ -23,7 +23,6 @@ from plinth import action_utils, actions, app class Daemon(app.LeaderComponent): """Component to manage a background daemon or any systemd unit.""" - def __init__(self, component_id, unit, strict_check=False): """Initialize a new daemon component. diff --git a/plinth/dbus.py b/plinth/dbus.py index ca4cad47e..3b3ec2efa 100755 --- a/plinth/dbus.py +++ b/plinth/dbus.py @@ -83,7 +83,6 @@ class PackageHandler(): class DBusServer(): """Abstraction over a connection to D-Bus.""" - def __init__(self): """Initialize the server object.""" self.package_handler = None diff --git a/plinth/forms.py b/plinth/forms.py index 1cacf78ef..7b0fa18df 100644 --- a/plinth/forms.py +++ b/plinth/forms.py @@ -43,7 +43,6 @@ class DomainSelectionForm(forms.Form): """Form for selecting a domain name to be used for distributed federated applications """ - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -84,9 +83,9 @@ class LanguageSelectionFormMixin: plinth_dir = os.path.dirname(plinth.__file__) if language_code == 'en' or os.path.exists( os.path.join(plinth_dir, 'locale', locale_code)): - supported_languages.append((language_code, - _get_local_name( - language_code, language_name))) + supported_languages.append( + (language_code, + _get_local_name(language_code, language_name))) self.fields['language'].choices = supported_languages @@ -106,7 +105,6 @@ class CheckboxSelectMultipleWithReadOnly(forms.widgets.CheckboxSelectMultiple): Derived from https://djangosnippets.org/snippets/2786/ """ - def render(self, name, value, attrs=None, choices=(), renderer=None): if value is None: value = [] @@ -114,8 +112,8 @@ class CheckboxSelectMultipleWithReadOnly(forms.widgets.CheckboxSelectMultiple): output = [u'
    '] global_readonly = 'readonly' in final_attrs str_values = set([v for v in value]) - for i, (option_value, option_label) in enumerate( - chain(self.choices, choices)): + for i, (option_value, + option_label) in enumerate(chain(self.choices, choices)): if not global_readonly and 'readonly' in final_attrs: # If the entire group is readonly keep all options readonly del final_attrs['readonly'] diff --git a/plinth/kvstore.py b/plinth/kvstore.py index a9407b4ab..7d2d1408b 100644 --- a/plinth/kvstore.py +++ b/plinth/kvstore.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Simple key/value store using Django models """ diff --git a/plinth/middleware.py b/plinth/middleware.py index 827af8a48..83973303b 100644 --- a/plinth/middleware.py +++ b/plinth/middleware.py @@ -41,7 +41,6 @@ logger = logging.getLogger(__name__) class SetupMiddleware(MiddlewareMixin): """Django middleware to show pre-setup message and setup progress.""" - @staticmethod def process_view(request, view_func, view_args, view_kwargs): """Handle a request as Django middleware request handler.""" @@ -77,8 +76,8 @@ class SetupMiddleware(MiddlewareMixin): str(exception)) error_details = getattr(exception, 'error_details', '') message = _('Error installing application: {string} ' - '{details}').format( - string=error_string, details=error_details) + '{details}').format(string=error_string, + details=error_details) else: message = _('Error installing application: {error}') \ .format(error=exception) @@ -96,7 +95,6 @@ class SetupMiddleware(MiddlewareMixin): class AdminRequiredMiddleware(MiddlewareMixin): """Django middleware for authenticating requests for admin areas.""" - @staticmethod def process_view(request, view_func, view_args, view_kwargs): """Reject non-admin access to views that are private and not marked.""" @@ -110,7 +108,6 @@ class AdminRequiredMiddleware(MiddlewareMixin): class FirstSetupMiddleware(MiddlewareMixin): """Django middleware to block all interactions before first setup.""" - @staticmethod def process_view(request, view_func, view_args, view_kwargs): """Block all user interactions when first setup is pending.""" diff --git a/plinth/migrations/0001_initial.py b/plinth/migrations/0001_initial.py index c7c741922..3208d1a1c 100644 --- a/plinth/migrations/0001_initial.py +++ b/plinth/migrations/0001_initial.py @@ -18,7 +18,6 @@ # # Generated by Django 1.9 on 2015-12-04 07:27 # - """ Initial Django migration for FreedomBox to create database tables. """ @@ -33,8 +32,7 @@ class Migration(migrations.Migration): initial = True - dependencies = [ - ] + dependencies = [] operations = [ migrations.CreateModel( diff --git a/plinth/migrations/0003_merge_firstboot_completed_fields.py b/plinth/migrations/0003_merge_firstboot_completed_fields.py index 1e4c441a9..fd615d6d1 100644 --- a/plinth/migrations/0003_merge_firstboot_completed_fields.py +++ b/plinth/migrations/0003_merge_firstboot_completed_fields.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Remove the deprecated KVStore entries 'setup_state' and 'firstboot_state', and only use the new entry 'firstboot_completed' instead. @@ -63,8 +62,8 @@ def merge_firstboot_finished_fields(apps, schema_editor): firstboot_completed = _object.value # Set new 'firstboot_completed' if needed - new_firstboot_completed = bool(firstboot_completed or setup_state or - firstboot_state) + new_firstboot_completed = bool(firstboot_completed or setup_state + or firstboot_state) if new_firstboot_completed and not firstboot_completed: obj, created = KVStore.objects.get_or_create(key='firstboot_completed') obj.value = 1 diff --git a/plinth/migrations/0004_userprofile.py b/plinth/migrations/0004_userprofile.py index f193f2d0c..9dd6a868c 100644 --- a/plinth/migrations/0004_userprofile.py +++ b/plinth/migrations/0004_userprofile.py @@ -30,14 +30,17 @@ class Migration(migrations.Migration): migrations.CreateModel( name='UserProfile', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, - serialize=False, verbose_name='ID')), - ('language', models.CharField(default=None, max_length=32, - null=True)), - ('user', models.OneToOneField( - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL)), - ], ), + ('id', + models.AutoField(auto_created=True, primary_key=True, + serialize=False, verbose_name='ID')), + ('language', + models.CharField(default=None, max_length=32, null=True)), + ('user', + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL)), + ], + ), migrations.RunPython(code=insert_users, reverse_code=truncate_user_profile), ] diff --git a/plinth/modules/apache/__init__.py b/plinth/modules/apache/__init__.py index 9d619c3f7..bb47a30d6 100644 --- a/plinth/modules/apache/__init__.py +++ b/plinth/modules/apache/__init__.py @@ -54,9 +54,9 @@ class ApacheApp(app_module.App): freedombox_ports = Firewall( 'firewall-plinth', - format_lazy( - _('{box_name} Web Interface (Plinth)'), box_name=_( - cfg.box_name)), ports=['http', 'https'], is_external=True) + format_lazy(_('{box_name} Web Interface (Plinth)'), + box_name=_(cfg.box_name)), ports=['http', 'https'], + is_external=True) self.add(freedombox_ports) letsencrypt = LetsEncrypt('letsencrypt-apache', domains='*', diff --git a/plinth/modules/apache/components.py b/plinth/modules/apache/components.py index 70fc64074..7fc22a753 100644 --- a/plinth/modules/apache/components.py +++ b/plinth/modules/apache/components.py @@ -23,7 +23,6 @@ from plinth import action_utils, actions, app class Webserver(app.LeaderComponent): """Component to enable/disable Apache configuration.""" - def __init__(self, component_id, web_name, kind='config'): """Initialize the web server component. @@ -62,7 +61,6 @@ class Webserver(app.LeaderComponent): class Uwsgi(app.LeaderComponent): """Component to enable/disable uWSGI configuration.""" - def __init__(self, component_id, uwsgi_name): """Initialize the uWSGI component. diff --git a/plinth/modules/apache/urls.py b/plinth/modules/apache/urls.py index 459a8096d..ecd727c94 100644 --- a/plinth/modules/apache/urls.py +++ b/plinth/modules/apache/urls.py @@ -14,10 +14,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the Apache module. """ -urlpatterns = [ -] +urlpatterns = [] diff --git a/plinth/modules/api/views.py b/plinth/modules/api/views.py index a1c5ebdc7..536f4056f 100644 --- a/plinth/modules/api/views.py +++ b/plinth/modules/api/views.py @@ -45,9 +45,8 @@ def shortcuts(request, **kwargs): # XXX: Get the module (or module name) from shortcut properly. username = str(request.user) if request.user.is_authenticated else None response = get_shortcuts_as_json(username) - return HttpResponse( - json.dumps(response, cls=DjangoJSONEncoder), - content_type='application/json') + return HttpResponse(json.dumps(response, cls=DjangoJSONEncoder), + content_type='application/json') def get_shortcuts_as_json(username=None): diff --git a/plinth/modules/avahi/__init__.py b/plinth/modules/avahi/__init__.py index 3cd585667..d58de5b9e 100644 --- a/plinth/modules/avahi/__init__.py +++ b/plinth/modules/avahi/__init__.py @@ -91,9 +91,10 @@ def init(): global app app = AvahiApp() if app.is_enabled(): - domain_added.send_robust( - sender='avahi', domain_type='domain-type-local', - name=get_hostname() + '.local', services='__all__') + domain_added.send_robust(sender='avahi', + domain_type='domain-type-local', + name=get_hostname() + '.local', + services='__all__') app.set_enabled(True) post_hostname_change.connect(on_post_hostname_change) diff --git a/plinth/modules/backups/__init__.py b/plinth/modules/backups/__init__.py index a4c7be23d..d355848b0 100644 --- a/plinth/modules/backups/__init__.py +++ b/plinth/modules/backups/__init__.py @@ -108,9 +108,8 @@ def _backup_handler(packet, encryption_passphrase=None): arguments = ['create-archive', '--path', packet.path, '--paths'] + paths input_data = '' if encryption_passphrase: - input_data = json.dumps({ - 'encryption_passphrase': encryption_passphrase - }) + input_data = json.dumps( + {'encryption_passphrase': encryption_passphrase}) actions.superuser_run('backups', arguments, input=input_data.encode()) diff --git a/plinth/modules/backups/api.py b/plinth/modules/backups/api.py index a6b0a9780..9e72ebc3b 100644 --- a/plinth/modules/backups/api.py +++ b/plinth/modules/backups/api.py @@ -82,7 +82,6 @@ def _validate_service(service): class BackupError: """Represent an backup/restore operation error.""" - def __init__(self, error_type, app, hook=None): """Initialize the error object.""" self.error_type = error_type @@ -98,7 +97,6 @@ class BackupError: class Packet: """Information passed to a handlers for backup/restore operations.""" - def __init__(self, operation, scope, root, apps=None, path=None): """Initialize the packet. @@ -240,7 +238,6 @@ def _install_apps_before_restore(apps): class BackupApp: """A application that can be backed up and its manifest.""" - def __init__(self, name, app): """Initialize object and load manfiest.""" self.name = name @@ -365,7 +362,6 @@ def _switch_to_subvolume(subvolume): class ServiceHandler: """Abstraction to help with service shutdown/restart.""" - @staticmethod def create(backup_app, service): service_type = 'system' @@ -400,7 +396,6 @@ class ServiceHandler: class SystemServiceHandler(ServiceHandler): """Handle starting and stopping of system services for backup.""" - def __init__(self, backup_app, service): """Initialize the object.""" super().__init__(backup_app, service) @@ -420,7 +415,6 @@ class SystemServiceHandler(ServiceHandler): class ApacheServiceHandler(ServiceHandler): """Handle starting and stopping of Apache services for backup.""" - def __init__(self, backup_app, service): """Initialize the object.""" super().__init__(backup_app, service) diff --git a/plinth/modules/backups/decorators.py b/plinth/modules/backups/decorators.py index ffa756f4d..03fae602f 100644 --- a/plinth/modules/backups/decorators.py +++ b/plinth/modules/backups/decorators.py @@ -30,7 +30,6 @@ def delete_tmp_backup_file(function): XXX: Implement a better way to delete uploaded files. """ - @functools.wraps(function) def wrapper(request, *args, **kwargs): path = request.session.get(SESSION_PATH_VARIABLE, None) diff --git a/plinth/modules/backups/repository.py b/plinth/modules/backups/repository.py index cb0fd8a31..7b57773b6 100644 --- a/plinth/modules/backups/repository.py +++ b/plinth/modules/backups/repository.py @@ -59,10 +59,8 @@ KNOWN_ERRORS = [ 'errors': [ 'not a valid repository', 'does not exist', 'FileNotFoundError' ], - 'message': - _('Repository not found'), - 'raise_as': - errors.BorgRepositoryDoesNotExistError, + 'message': _('Repository not found'), + 'raise_as': errors.BorgRepositoryDoesNotExistError, }, { 'errors': ['passphrase supplied in .* is incorrect'], @@ -176,7 +174,6 @@ class BaseBorgRepository(abc.ABC): def remove(self): """Remove a borg repository""" - def list_archives(self): """Return list of archives in this repository.""" output = self.run(['list-repo', '--path', self.borg_path]) @@ -241,7 +238,6 @@ class BaseBorgRepository(abc.ABC): def get_download_stream(self, archive_name): """Return an stream of .tar.gz binary data for a backup archive.""" - class BufferedReader(io.BufferedReader): """Improve performance of buffered binary streaming. @@ -255,7 +251,6 @@ class BaseBorgRepository(abc.ABC): binary data. """ - def __next__(self): """Override to call read() instead of readline().""" chunk = self.read(io.DEFAULT_BUFFER_SIZE) diff --git a/plinth/modules/backups/tests/test_api.py b/plinth/modules/backups/tests/test_api.py index 5b4bba46a..c8436a7b3 100644 --- a/plinth/modules/backups/tests/test_api.py +++ b/plinth/modules/backups/tests/test_api.py @@ -57,7 +57,6 @@ def _get_backup_app(name): class TestBackupApp: """Test the BackupApp class.""" - @staticmethod def test_run_hook(): """Test running a hook on an application.""" @@ -82,7 +81,6 @@ class TestBackupApp: @pytest.mark.usefixtures('load_cfg') class TestBackupProcesses: """Test cases for backup processes""" - @staticmethod def test_packet_process_manifests(): """Test that directories/files are collected from manifests.""" @@ -239,7 +237,6 @@ class TestBackupProcesses: class TestBackupModule: """Tests of the backups django module, like views or forms.""" - @staticmethod def test_file_upload(): # posting a video should fail diff --git a/plinth/modules/cockpit/utils.py b/plinth/modules/cockpit/utils.py index 6965621ad..b54a9a7c7 100644 --- a/plinth/modules/cockpit/utils.py +++ b/plinth/modules/cockpit/utils.py @@ -27,8 +27,8 @@ CONFIG_FILE = '/etc/cockpit/cockpit.conf' def load_augeas(): """Initialize Augeas.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/inifile/lens', 'Puppet.lns') aug.set('/augeas/load/inifile/incl[last() + 1]', CONFIG_FILE) aug.load() diff --git a/plinth/modules/config/__init__.py b/plinth/modules/config/__init__.py index e732f1f81..6db06b41f 100644 --- a/plinth/modules/config/__init__.py +++ b/plinth/modules/config/__init__.py @@ -81,8 +81,8 @@ def get_hostname(): def _get_home_page_url(): """Get the default application for the domain.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Httpd/lens', 'Httpd.lns') conf_file = APACHE_HOMEPAGE_CONFIG if os.path.exists( APACHE_HOMEPAGE_CONFIG) else FREEDOMBOX_APACHE_CONFIG diff --git a/plinth/modules/config/forms.py b/plinth/modules/config/forms.py index ea11ddb94..cd01e6c1e 100644 --- a/plinth/modules/config/forms.py +++ b/plinth/modules/config/forms.py @@ -67,11 +67,10 @@ class ConfigurationForm(forms.Form): 'end with an alphabet or a digit and have as interior ' 'characters only alphabets, digits and hyphens. Total ' 'length must be 63 characters or less.'), - box_name=ugettext_lazy(cfg.box_name)), - validators=[ - validators.RegexValidator(HOSTNAME_REGEX, - ugettext_lazy('Invalid hostname')) - ], strip=True) + box_name=ugettext_lazy(cfg.box_name)), validators=[ + validators.RegexValidator(HOSTNAME_REGEX, + ugettext_lazy('Invalid hostname')) + ], strip=True) domainname = forms.CharField( label=ugettext_lazy('Domain Name'), help_text=format_lazy( @@ -83,12 +82,12 @@ class ConfigurationForm(forms.Form): 'only alphabets, digits and hyphens. Length of each label ' 'must be 63 characters or less. Total length of domain name ' 'must be 253 characters or less.'), - box_name=ugettext_lazy(cfg.box_name)), - required=False, validators=[ - validators.RegexValidator( - r'^[a-zA-Z0-9]([-a-zA-Z0-9.]{,251}[a-zA-Z0-9])?$', - ugettext_lazy('Invalid domain name')), domain_label_validator - ], strip=True) + box_name=ugettext_lazy(cfg.box_name)), required=False, validators=[ + validators.RegexValidator( + r'^[a-zA-Z0-9]([-a-zA-Z0-9.]{,251}[a-zA-Z0-9])?$', + ugettext_lazy('Invalid domain name')), + domain_label_validator + ], strip=True) homepage = forms.ChoiceField( label=ugettext_lazy('Webserver Home Page'), help_text=format_lazy( diff --git a/plinth/modules/diagnostics/urls.py b/plinth/modules/diagnostics/urls.py index 56ff7ef0b..ace9382e3 100644 --- a/plinth/modules/diagnostics/urls.py +++ b/plinth/modules/diagnostics/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the Diagnostics module """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import diagnostics as views - urlpatterns = [ url(r'^sys/diagnostics/$', views.index, name='index'), url(r'^sys/diagnostics/(?P[1-9a-z\-]+)/$', views.module, diff --git a/plinth/modules/diaspora/__init__.py b/plinth/modules/diaspora/__init__.py index 0575154c6..4452a8627 100644 --- a/plinth/modules/diaspora/__init__.py +++ b/plinth/modules/diaspora/__init__.py @@ -89,9 +89,10 @@ class DiasporaApp(app_module.App): parent_url_name='apps') self.add(menu_item) - shortcut = Shortcut( - 'shortcut-diaspora', name, short_description=short_description, - icon='diaspora', url=None, clients=clients, login_required=True) + shortcut = Shortcut('shortcut-diaspora', name, + short_description=short_description, + icon='diaspora', url=None, clients=clients, + login_required=True) self.add(shortcut) firewall = Firewall('firewall-diaspora', name, ports=['http', 'https'], @@ -107,7 +108,6 @@ class DiasporaApp(app_module.App): class Shortcut(frontpage.Shortcut): """Frontpage shortcut to use configured domain name for URL.""" - def enable(self): """Set the proper shortcut URL when enabled.""" super().enable() @@ -179,8 +179,8 @@ def generate_apache_configuration(conf_file, domain_name): diaspora_domain_name = ".".join(["diaspora", domain_name]) - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Httpd/lens', 'Httpd.lns') aug.set('/augeas/load/Httpd/incl[last() + 1]', conf_file) diff --git a/plinth/modules/diaspora/manifest.py b/plinth/modules/diaspora/manifest.py index e0c968602..d98cda5d9 100644 --- a/plinth/modules/diaspora/manifest.py +++ b/plinth/modules/diaspora/manifest.py @@ -40,8 +40,9 @@ clients = validate([{ 'type': 'web', 'url': - format_lazy('https://diaspora.{host}', - host=diaspora.get_configured_domain_name() if - diaspora.is_setup() else "") + format_lazy( + 'https://diaspora.{host}', + host=diaspora.get_configured_domain_name() + if diaspora.is_setup() else "") }] }]) diff --git a/plinth/modules/dynamicdns/__init__.py b/plinth/modules/dynamicdns/__init__.py index a06b343fc..c96a7dc52 100644 --- a/plinth/modules/dynamicdns/__init__.py +++ b/plinth/modules/dynamicdns/__init__.py @@ -86,9 +86,10 @@ def init(): app = DynamicDNSApp() current_status = get_status() if current_status['enabled']: - domain_added.send_robust( - sender='dynamicdns', domain_type='domain-type-dynamic', - name=current_status['dynamicdns_domain'], services='__all__') + domain_added.send_robust(sender='dynamicdns', + domain_type='domain-type-dynamic', + name=current_status['dynamicdns_domain'], + services='__all__') app.set_enabled(True) diff --git a/plinth/modules/dynamicdns/forms.py b/plinth/modules/dynamicdns/forms.py index d22197d7b..397fc6c06 100644 --- a/plinth/modules/dynamicdns/forms.py +++ b/plinth/modules/dynamicdns/forms.py @@ -28,7 +28,6 @@ from plinth.utils import format_lazy class TrimmedCharField(forms.CharField): """Trim the contents of a CharField.""" - def clean(self, value): """Clean and validate the field value""" if value: @@ -81,12 +80,12 @@ class ConfigureForm(forms.Form): 'freedns.afraid.org'), ('other', 'other update URL')) - enabled = forms.BooleanField( - label=ugettext_lazy('Enable Dynamic DNS'), required=False) + enabled = forms.BooleanField(label=ugettext_lazy('Enable Dynamic DNS'), + required=False) - service_type = forms.ChoiceField( - label=ugettext_lazy('Service Type'), help_text=help_services, - choices=provider_choices) + service_type = forms.ChoiceField(label=ugettext_lazy('Service Type'), + help_text=help_services, + choices=provider_choices) dynamicdns_server = TrimmedCharField( label=ugettext_lazy('GnuDIP Server Address'), required=False, @@ -95,9 +94,9 @@ class ConfigureForm(forms.Form): ugettext_lazy('Invalid server name')) ]) - dynamicdns_update_url = TrimmedCharField( - label=ugettext_lazy('Update URL'), required=False, - help_text=help_update_url) + dynamicdns_update_url = TrimmedCharField(label=ugettext_lazy('Update URL'), + required=False, + help_text=help_update_url) disable_SSL_cert_check = forms.BooleanField( label=ugettext_lazy('Accept all SSL certificates'), @@ -114,15 +113,15 @@ class ConfigureForm(forms.Form): ugettext_lazy('Invalid domain name')) ]) - dynamicdns_user = TrimmedCharField( - label=ugettext_lazy('Username'), required=False, help_text=help_user) + dynamicdns_user = TrimmedCharField(label=ugettext_lazy('Username'), + required=False, help_text=help_user) - dynamicdns_secret = TrimmedCharField( - label=ugettext_lazy('Password'), widget=forms.PasswordInput(), - required=False, help_text=help_secret) + dynamicdns_secret = TrimmedCharField(label=ugettext_lazy('Password'), + widget=forms.PasswordInput(), + required=False, help_text=help_secret) - showpw = forms.BooleanField( - label=ugettext_lazy('Show password'), required=False) + showpw = forms.BooleanField(label=ugettext_lazy('Show password'), + required=False) dynamicdns_ipurl = TrimmedCharField( label=ugettext_lazy('URL to look up public IP'), required=False, diff --git a/plinth/modules/dynamicdns/views.py b/plinth/modules/dynamicdns/views.py index 5827f500a..b00df9b18 100644 --- a/plinth/modules/dynamicdns/views.py +++ b/plinth/modules/dynamicdns/views.py @@ -39,15 +39,13 @@ EMPTYSTRING = 'none' subsubmenu = [{ 'url': reverse_lazy('dynamicdns:index'), 'text': ugettext_lazy('About') -}, - { - 'url': reverse_lazy('dynamicdns:configure'), - 'text': ugettext_lazy('Configure') - }, - { - 'url': reverse_lazy('dynamicdns:statuspage'), - 'text': ugettext_lazy('Status') - }] +}, { + 'url': reverse_lazy('dynamicdns:configure'), + 'text': ugettext_lazy('Configure') +}, { + 'url': reverse_lazy('dynamicdns:statuspage'), + 'text': ugettext_lazy('Status') +}] def index(request): @@ -164,9 +162,10 @@ def _apply_changes(request, old_status, new_status): _run(['stop']) if new_status['enabled']: - domain_added.send_robust( - sender='dynamicdns', domain_type='domain-type-dynamic', - name=new_status['dynamicdns_domain'], services='__all__') + domain_added.send_robust(sender='dynamicdns', + domain_type='domain-type-dynamic', + name=new_status['dynamicdns_domain'], + services='__all__') _run(['start']) messages.success(request, _('Configuration updated')) diff --git a/plinth/modules/firewall/tests/test_components.py b/plinth/modules/firewall/tests/test_components.py index 88f571b37..cf5bac265 100644 --- a/plinth/modules/firewall/tests/test_components.py +++ b/plinth/modules/firewall/tests/test_components.py @@ -77,7 +77,6 @@ def test_port_details(get_port_details): @patch('plinth.modules.firewall.get_enabled_services') def test_enable(get_enabled_services, add_service): """Test enabling a firewall component.""" - def get_enabled_services_side_effect(zone): return {'internal': ['test-port1'], 'external': ['test-port2']}[zone] diff --git a/plinth/modules/firewall/urls.py b/plinth/modules/firewall/urls.py index ae949c8d1..d6e2ddc4f 100644 --- a/plinth/modules/firewall/urls.py +++ b/plinth/modules/firewall/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the Firewall module """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^sys/firewall/$', views.index, name='index'), ] diff --git a/plinth/modules/first_boot/middleware.py b/plinth/modules/first_boot/middleware.py index 914079afb..075285e2c 100644 --- a/plinth/modules/first_boot/middleware.py +++ b/plinth/modules/first_boot/middleware.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Django middleware to redirect to firstboot wizard if it has not be run yet. @@ -34,7 +33,6 @@ LOGGER = logging.getLogger(__name__) class FirstBootMiddleware(MiddlewareMixin): """Forward to firstboot page if firstboot isn't finished yet.""" - @staticmethod def process_request(request): """Handle a request as Django middleware request handler.""" diff --git a/plinth/modules/gitweb/__init__.py b/plinth/modules/gitweb/__init__.py index 2970349eb..57730a903 100644 --- a/plinth/modules/gitweb/__init__.py +++ b/plinth/modules/gitweb/__init__.py @@ -78,10 +78,11 @@ class GitwebApp(app_module.App): 'gitweb:index', parent_url_name='apps') self.add(menu_item) - shortcut = frontpage.Shortcut( - 'shortcut-gitweb', name, short_description=short_description, - icon=icon_filename, url='/gitweb/', clients=clients, - login_required=True, allowed_groups=[group[0]]) + shortcut = frontpage.Shortcut('shortcut-gitweb', name, + short_description=short_description, + icon=icon_filename, url='/gitweb/', + clients=clients, login_required=True, + allowed_groups=[group[0]]) self.add(shortcut) firewall = Firewall('firewall-gitweb', name, ports=['http', 'https'], @@ -154,7 +155,6 @@ class GitwebApp(app_module.App): class GitwebWebserverAuth(Webserver): """Component to handle Gitweb authentication webserver configuration.""" - def is_conf_enabled(self): """Check whether Gitweb authentication configuration is enabled.""" return super().is_enabled() diff --git a/plinth/modules/gitweb/forms.py b/plinth/modules/gitweb/forms.py index a4b0181e8..0722ae1f1 100644 --- a/plinth/modules/gitweb/forms.py +++ b/plinth/modules/gitweb/forms.py @@ -83,9 +83,9 @@ class CreateRepoForm(forms.Form): label=_('Description of the repository'), strip=True, required=False, help_text=_('Optional, for displaying on Gitweb.')) - owner = forms.CharField( - label=_('Repository\'s owner name'), strip=True, required=False, - help_text=_('Optional, for displaying on Gitweb.')) + owner = forms.CharField(label=_('Repository\'s owner name'), strip=True, + required=False, + help_text=_('Optional, for displaying on Gitweb.')) is_private = forms.BooleanField( label=_('Private repository'), required=False, diff --git a/plinth/modules/gitweb/tests/test_gitweb.py b/plinth/modules/gitweb/tests/test_gitweb.py index 52b646c2b..254e0c613 100644 --- a/plinth/modules/gitweb/tests/test_gitweb.py +++ b/plinth/modules/gitweb/tests/test_gitweb.py @@ -30,8 +30,8 @@ from django.forms import ValidationError def _action_file(): """Return the path to the 'gitweb' actions file.""" current_directory = pathlib.Path(__file__).parent - return str( - current_directory / '..' / '..' / '..' / '..' / 'actions' / 'gitweb') + return str(current_directory / '..' / '..' / '..' / '..' / 'actions' / + 'gitweb') gitweb_actions = imp.load_source('gitweb', _action_file()) @@ -40,7 +40,6 @@ gitweb_actions = imp.load_source('gitweb', _action_file()) @pytest.fixture(name='call_action') def fixture_call_action(tmpdir, capsys): """Run actions with custom repo root path.""" - def _call_action(args, **kwargs): gitweb_actions.GIT_REPO_PATH = str(tmpdir) with patch('argparse._sys.argv', ['gitweb'] + args): diff --git a/plinth/modules/i2p/__init__.py b/plinth/modules/i2p/__init__.py index a38ee2336..0ab5d430b 100644 --- a/plinth/modules/i2p/__init__.py +++ b/plinth/modules/i2p/__init__.py @@ -89,10 +89,11 @@ class I2PApp(app_module.App): 'i2p:index', parent_url_name='apps') self.add(menu_item) - shortcut = frontpage.Shortcut( - 'shortcut-i2p', name, short_description=short_description, - icon=icon_filename, url='/i2p/', clients=clients, login_required=True, - allowed_groups=[group[0]]) + shortcut = frontpage.Shortcut('shortcut-i2p', name, + short_description=short_description, + icon=icon_filename, url='/i2p/', + clients=clients, login_required=True, + allowed_groups=[group[0]]) self.add(shortcut) firewall = Firewall('firewall-i2p-web', name, ports=['http', 'https'], diff --git a/plinth/modules/i2p/helpers.py b/plinth/modules/i2p/helpers.py index c74138c2d..0e610792a 100644 --- a/plinth/modules/i2p/helpers.py +++ b/plinth/modules/i2p/helpers.py @@ -35,7 +35,6 @@ class TunnelEditor(): :type aug: augeas.Augeas """ - def __init__(self, conf_filename=None, idx=None): self.conf_filename = conf_filename or FILE_TUNNEL_CONF self.idx = idx @@ -55,8 +54,8 @@ class TunnelEditor(): Chainable method. """ - self.aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + self.aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) self.aug.set('/augeas/load/Properties/lens', 'Properties.lns') self.aug.set('/augeas/load/Properties/incl[last() + 1]', self.conf_filename) @@ -160,8 +159,8 @@ class RouterEditor(): Chainable method. """ - self.aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + self.aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) self.aug.set('/augeas/load/Properties/lens', 'Properties.lns') self.aug.set('/augeas/load/Properties/incl[last() + 1]', self.conf_filename) diff --git a/plinth/modules/i2p/resources.py b/plinth/modules/i2p/resources.py index b6b9df7fd..2a7c34dbe 100644 --- a/plinth/modules/i2p/resources.py +++ b/plinth/modules/i2p/resources.py @@ -18,110 +18,92 @@ Pre-defined list of favorites for I2P and some additional favorites. """ -DEFAULT_FAVORITES = [ - { - 'name': 'anoncoin.i2p', - 'description': 'The Anoncoin project', - 'icon': '/themes/console/images/anoncoin_32.png', - 'url': 'http://anoncoin.i2p/' - }, - { - 'name': 'Dev Builds', - 'description': 'Development builds of I2P', - 'icon': '/themes/console/images/script_gear.png', - 'url': 'http://bobthebuilder.i2p/' - }, - { - 'name': 'Dev Forum', - 'description': 'Development forum', - 'icon': '/themes/console/images/group_gear.png', - 'url': 'http://zzz.i2p/' - }, - { - 'name': 'echelon.i2p', - 'description': 'I2P Applications', - 'icon': '/themes/console/images/box_open.png', - 'url': 'http://echelon.i2p/' - }, - { - 'name': 'exchanged.i2p', - 'description': 'Anonymous cryptocurrency exchange', - 'icon': '/themes/console/images/exchanged.png', - 'url': 'http://exchanged.i2p/' - }, - { - 'name': 'I2P Bug Reports', - 'description': 'Bug tracker', - 'icon': '/themes/console/images/bug.png', - 'url': 'http://trac.i2p2.i2p/report/1' - }, - { - 'name': 'I2P FAQ', - 'description': 'Frequently Asked Questions', - 'icon': '/themes/console/images/question.png', - 'url': 'http://i2p-projekt.i2p/faq' - }, - { - 'name': 'I2P Forum', - 'description': 'Community forum', - 'icon': '/themes/console/images/group.png', - 'url': 'http://i2pforum.i2p/' - }, - { - 'name': 'I2P Plugins', - 'description': 'Add-on directory', - 'icon': '/themes/console/images/info/plugin_link.png', - 'url': 'http://i2pwiki.i2p/index.php?title=Plugins' - }, - { - 'name': 'I2P Technical Docs', - 'description': 'Technical documentation', - 'icon': '/themes/console/images/education.png', - 'url': 'http://i2p-projekt.i2p/how' - }, - { - 'name': 'I2P Wiki', - 'description': 'Anonymous wiki - share the knowledge', - 'icon': '/themes/console/images/i2pwiki_logo.png', - 'url': 'http://i2pwiki.i2p/' - }, - { - 'name': 'Planet I2P', - 'description': 'I2P News', - 'icon': '/themes/console/images/world.png', - 'url': 'http://planet.i2p/' - }, - { - 'name': 'PrivateBin', - 'description': 'Encrypted I2P Pastebin', - 'icon': '/themes/console/images/paste_plain.png', - 'url': 'http://paste.crypthost.i2p/' - }, - { - 'name': 'Project Website', - 'description': 'I2P home page', - 'icon': '/themes/console/images/info_rhombus.png', - 'url': 'http://i2p-projekt.i2p/' - }, - { - 'name': 'stats.i2p', - 'description': 'I2P Network Statistics', - 'icon': '/themes/console/images/chart_line.png', - 'url': 'http://stats.i2p/cgi-bin/dashboard.cgi' - }, - { - 'name': 'The Tin Hat', - 'description': 'Privacy guides and tutorials', - 'icon': '/themes/console/images/thetinhat.png', - 'url': 'http://secure.thetinhat.i2p/' - }, - { - 'name': 'Trac Wiki', - 'description': '', - 'icon': '/themes/console/images/billiard_marker.png', - 'url': 'http://trac.i2p2.i2p/' - } -] +DEFAULT_FAVORITES = [{ + 'name': 'anoncoin.i2p', + 'description': 'The Anoncoin project', + 'icon': '/themes/console/images/anoncoin_32.png', + 'url': 'http://anoncoin.i2p/' +}, { + 'name': 'Dev Builds', + 'description': 'Development builds of I2P', + 'icon': '/themes/console/images/script_gear.png', + 'url': 'http://bobthebuilder.i2p/' +}, { + 'name': 'Dev Forum', + 'description': 'Development forum', + 'icon': '/themes/console/images/group_gear.png', + 'url': 'http://zzz.i2p/' +}, { + 'name': 'echelon.i2p', + 'description': 'I2P Applications', + 'icon': '/themes/console/images/box_open.png', + 'url': 'http://echelon.i2p/' +}, { + 'name': 'exchanged.i2p', + 'description': 'Anonymous cryptocurrency exchange', + 'icon': '/themes/console/images/exchanged.png', + 'url': 'http://exchanged.i2p/' +}, { + 'name': 'I2P Bug Reports', + 'description': 'Bug tracker', + 'icon': '/themes/console/images/bug.png', + 'url': 'http://trac.i2p2.i2p/report/1' +}, { + 'name': 'I2P FAQ', + 'description': 'Frequently Asked Questions', + 'icon': '/themes/console/images/question.png', + 'url': 'http://i2p-projekt.i2p/faq' +}, { + 'name': 'I2P Forum', + 'description': 'Community forum', + 'icon': '/themes/console/images/group.png', + 'url': 'http://i2pforum.i2p/' +}, { + 'name': 'I2P Plugins', + 'description': 'Add-on directory', + 'icon': '/themes/console/images/info/plugin_link.png', + 'url': 'http://i2pwiki.i2p/index.php?title=Plugins' +}, { + 'name': 'I2P Technical Docs', + 'description': 'Technical documentation', + 'icon': '/themes/console/images/education.png', + 'url': 'http://i2p-projekt.i2p/how' +}, { + 'name': 'I2P Wiki', + 'description': 'Anonymous wiki - share the knowledge', + 'icon': '/themes/console/images/i2pwiki_logo.png', + 'url': 'http://i2pwiki.i2p/' +}, { + 'name': 'Planet I2P', + 'description': 'I2P News', + 'icon': '/themes/console/images/world.png', + 'url': 'http://planet.i2p/' +}, { + 'name': 'PrivateBin', + 'description': 'Encrypted I2P Pastebin', + 'icon': '/themes/console/images/paste_plain.png', + 'url': 'http://paste.crypthost.i2p/' +}, { + 'name': 'Project Website', + 'description': 'I2P home page', + 'icon': '/themes/console/images/info_rhombus.png', + 'url': 'http://i2p-projekt.i2p/' +}, { + 'name': 'stats.i2p', + 'description': 'I2P Network Statistics', + 'icon': '/themes/console/images/chart_line.png', + 'url': 'http://stats.i2p/cgi-bin/dashboard.cgi' +}, { + 'name': 'The Tin Hat', + 'description': 'Privacy guides and tutorials', + 'icon': '/themes/console/images/thetinhat.png', + 'url': 'http://secure.thetinhat.i2p/' +}, { + 'name': 'Trac Wiki', + 'description': '', + 'icon': '/themes/console/images/billiard_marker.png', + 'url': 'http://trac.i2p2.i2p/' +}] ADDITIONAL_FAVORITES = [ { 'name': 'Searx instance', diff --git a/plinth/modules/i2p/views.py b/plinth/modules/i2p/views.py index 62892ed93..74dec44d8 100644 --- a/plinth/modules/i2p/views.py +++ b/plinth/modules/i2p/views.py @@ -32,11 +32,10 @@ subsubmenu = [{ }, { 'url': reverse_lazy('i2p:tunnels'), 'text': ugettext_lazy('Proxies') -}, - { - 'url': reverse_lazy('i2p:torrents'), - 'text': ugettext_lazy('Anonymous torrents') - }] +}, { + 'url': reverse_lazy('i2p:torrents'), + 'text': ugettext_lazy('Anonymous torrents') +}] class I2PAppView(AppView): diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 558dbeb44..e4eaf2033 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -92,8 +92,7 @@ class IkiwikiApp(app_module.App): """Add an ikiwiki shortcut to frontpage.""" shortcut = frontpage.Shortcut('shortcut-ikiwiki-' + site, title, icon=icon_filename, - url='/ikiwiki/' + site, - clients=clients) + url='/ikiwiki/' + site, clients=clients) self.add(shortcut) return shortcut diff --git a/plinth/modules/ikiwiki/forms.py b/plinth/modules/ikiwiki/forms.py index 433d9f0b7..812b3bee6 100644 --- a/plinth/modules/ikiwiki/forms.py +++ b/plinth/modules/ikiwiki/forms.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Forms for configuring ikiwiki """ @@ -25,14 +24,12 @@ from django.utils.translation import ugettext_lazy as _ class IkiwikiCreateForm(forms.Form): """Form to create a wiki or blog.""" - site_type = forms.ChoiceField( - label=_('Type'), - choices=[('wiki', 'Wiki'), ('blog', 'Blog')]) + site_type = forms.ChoiceField(label=_('Type'), choices=[('wiki', 'Wiki'), + ('blog', 'Blog')]) name = forms.CharField(label=_('Name')) admin_name = forms.CharField(label=_('Admin Account Name')) - admin_password = forms.CharField( - label=_('Admin Account Password'), - widget=forms.PasswordInput()) + admin_password = forms.CharField(label=_('Admin Account Password'), + widget=forms.PasswordInput()) diff --git a/plinth/modules/ikiwiki/manifest.py b/plinth/modules/ikiwiki/manifest.py index b5fcda0e7..50dc252ea 100644 --- a/plinth/modules/ikiwiki/manifest.py +++ b/plinth/modules/ikiwiki/manifest.py @@ -28,8 +28,7 @@ clients = validate([{ }] }]) -backup = validate_backup({ - 'data': { +backup = validate_backup( + {'data': { 'directories': ['/var/lib/ikiwiki/', '/var/www/ikiwiki/'] - } -}) + }}) diff --git a/plinth/modules/jsxc/__init__.py b/plinth/modules/jsxc/__init__.py index 4fb4475f4..3ec4756ca 100644 --- a/plinth/modules/jsxc/__init__.py +++ b/plinth/modules/jsxc/__init__.py @@ -63,10 +63,11 @@ class JSXCApp(app_module.App): 'jsxc:index', parent_url_name='apps') self.add(menu_item) - shortcut = frontpage.Shortcut( - 'shortcut-jsxc', name=name, short_description=short_description, - icon=icon_filename, - url=reverse_lazy('jsxc:jsxc'), clients=clients) + shortcut = frontpage.Shortcut('shortcut-jsxc', name=name, + short_description=short_description, + icon=icon_filename, + url=reverse_lazy('jsxc:jsxc'), + clients=clients) self.add(shortcut) firewall = Firewall('firewall-jsxc', name, ports=['http', 'https'], diff --git a/plinth/modules/letsencrypt/components.py b/plinth/modules/letsencrypt/components.py index f7a69cab0..aaa352288 100644 --- a/plinth/modules/letsencrypt/components.py +++ b/plinth/modules/letsencrypt/components.py @@ -326,9 +326,10 @@ class LetsEncrypt(app.FollowerComponent): source_certificate_path, private_key_path, certificate_path) else: - self._copy_certificate( - source_private_key_path, source_certificate_path, - self.private_key_path, self.certificate_path) + self._copy_certificate(source_private_key_path, + source_certificate_path, + self.private_key_path, + self.certificate_path) def _copy_certificate(self, source_private_key_path, source_certificate_path, private_key_path, @@ -374,8 +375,8 @@ def on_certificate_event(event, domains, lineage): certificate changes. """ - threading.Thread(target=on_certificate_event_sync, args=(event, domains, - lineage)).start() + threading.Thread(target=on_certificate_event_sync, + args=(event, domains, lineage)).start() def on_certificate_event_sync(event, domains, lineage): diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index a35926aa3..08ea2ebaa 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -108,9 +108,8 @@ class MatrixSynapseApp(app_module.App): self.add(webserver) letsencrypt = LetsEncrypt( - 'letsencrypt-matrixsynapse', domains=get_domains, daemons=[ - managed_services[0] - ], should_copy_certificates=True, + 'letsencrypt-matrixsynapse', domains=get_domains, + daemons=[managed_services[0]], should_copy_certificates=True, private_key_path='/etc/matrix-synapse/homeserver.tls.key', certificate_path='/etc/matrix-synapse/homeserver.tls.crt', user_owner='matrix-synapse', group_owner='nogroup', diff --git a/plinth/modules/mediawiki/__init__.py b/plinth/modules/mediawiki/__init__.py index 4bd4aeba0..e945cba0a 100644 --- a/plinth/modules/mediawiki/__init__.py +++ b/plinth/modules/mediawiki/__init__.py @@ -101,7 +101,6 @@ class MediaWikiApp(app_module.App): class Shortcut(frontpage.Shortcut): """Frontpage shortcut for only logged users when in private mode.""" - def enable(self): """When enabled, check if MediaWiki is in private mode.""" super().enable() diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index d5a651247..ffa928ea4 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -132,8 +132,8 @@ def diagnose(): def load_augeas(): """Initialize Augeas.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Php/lens', 'Php.lns') aug.set('/augeas/load/Php/incl[last() + 1]', CONFIG_FILE) aug.load() diff --git a/plinth/modules/minetest/forms.py b/plinth/modules/minetest/forms.py index 31afa21a7..0af0e0f18 100644 --- a/plinth/modules/minetest/forms.py +++ b/plinth/modules/minetest/forms.py @@ -28,9 +28,9 @@ class MinetestForm(AppForm): """Minetest configuration form""" max_players = forms.IntegerField( label=_('Maximum number of players'), required=True, min_value=1, - max_value=100, help_text=_( - 'You can change the maximum number of players playing ' - 'minetest at a single instance of time.')) + max_value=100, + help_text=_('You can change the maximum number of players playing ' + 'minetest at a single instance of time.')) creative_mode = forms.BooleanField( label=_('Enable creative mode'), required=False, diff --git a/plinth/modules/mldonkey/__init__.py b/plinth/modules/mldonkey/__init__.py index 3c73ad8b3..6c204756b 100644 --- a/plinth/modules/mldonkey/__init__.py +++ b/plinth/modules/mldonkey/__init__.py @@ -80,10 +80,11 @@ class MLDonkeyApp(app_module.App): parent_url_name='apps') self.add(menu_item) - shortcuts = frontpage.Shortcut( - 'shortcut-mldonkey', name, short_description=short_description, - icon=icon_filename, url='/mldonkey/', login_required=True, - clients=clients, allowed_groups=[group[0]]) + shortcuts = frontpage.Shortcut('shortcut-mldonkey', name, + short_description=short_description, + icon=icon_filename, url='/mldonkey/', + login_required=True, clients=clients, + allowed_groups=[group[0]]) self.add(shortcuts) firewall = Firewall('firewall-mldonkey', name, ports=['http', 'https'], diff --git a/plinth/modules/mldonkey/manifest.py b/plinth/modules/mldonkey/manifest.py index 969aed210..8151336cb 100644 --- a/plinth/modules/mldonkey/manifest.py +++ b/plinth/modules/mldonkey/manifest.py @@ -55,24 +55,18 @@ clients = validate([{ backup = validate_backup({ 'config': { 'files': [ - '/var/lib/mldonkey/bittorrent.ini', - '/var/lib/mldonkey/bt_dht.ini', + '/var/lib/mldonkey/bittorrent.ini', '/var/lib/mldonkey/bt_dht.ini', '/var/lib/mldonkey/directconnect.ini', - '/var/lib/mldonkey/donkey.ini', - '/var/lib/mldonkey/downloads.ini', + '/var/lib/mldonkey/donkey.ini', '/var/lib/mldonkey/downloads.ini', '/var/lib/mldonkey/files.ini', '/var/lib/mldonkey/file_sources.ini', - '/var/lib/mldonkey/fileTP.ini', - '/var/lib/mldonkey/friends.ini', - '/var/lib/mldonkey/searches.ini', - '/var/lib/mldonkey/servers.ini', + '/var/lib/mldonkey/fileTP.ini', '/var/lib/mldonkey/friends.ini', + '/var/lib/mldonkey/searches.ini', '/var/lib/mldonkey/servers.ini', '/var/lib/mldonkey/shared_files.ini', '/var/lib/mldonkey/shared_files_new.ini', '/var/lib/mldonkey/statistics.ini', - '/var/lib/mldonkey/stats_bt.ini', - '/var/lib/mldonkey/stats.ini', - '/var/lib/mldonkey/stats_mod.ini', - '/var/lib/mldonkey/users.ini' + '/var/lib/mldonkey/stats_bt.ini', '/var/lib/mldonkey/stats.ini', + '/var/lib/mldonkey/stats_mod.ini', '/var/lib/mldonkey/users.ini' ] }, 'services': ['mldonkey-server'] diff --git a/plinth/modules/mldonkey/urls.py b/plinth/modules/mldonkey/urls.py index 5b5e18483..8c9c9a28c 100644 --- a/plinth/modules/mldonkey/urls.py +++ b/plinth/modules/mldonkey/urls.py @@ -26,10 +26,10 @@ from plinth.views import AppView urlpatterns = [ url( r'^apps/mldonkey/$', - AppView.as_view( - app_id='mldonkey', name=mldonkey.name, - diagnostics_module_name='mldonkey', - description=mldonkey.description, clients=mldonkey.clients, - manual_page=mldonkey.manual_page, show_status_block=True), - name='index'), + AppView.as_view(app_id='mldonkey', name=mldonkey.name, + diagnostics_module_name='mldonkey', + description=mldonkey.description, + clients=mldonkey.clients, + manual_page=mldonkey.manual_page, + show_status_block=True), name='index'), ] diff --git a/plinth/modules/monkeysphere/urls.py b/plinth/modules/monkeysphere/urls.py index 86ad7ff14..ae8b554f4 100644 --- a/plinth/modules/monkeysphere/urls.py +++ b/plinth/modules/monkeysphere/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the monkeysphere module. """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^sys/monkeysphere/$', views.index, name='index'), url(r'^sys/monkeysphere/(?P[0-9A-Za-z:+/]+)/import/$', diff --git a/plinth/modules/mumble/manifest.py b/plinth/modules/mumble/manifest.py index 0ff16ea8f..132c1b74f 100644 --- a/plinth/modules/mumble/manifest.py +++ b/plinth/modules/mumble/manifest.py @@ -72,8 +72,4 @@ clients = validate([{ }] }]) -backup = validate_backup({ - 'data': { - 'directories': ['/var/lib/mumble-server'] - } -}) +backup = validate_backup({'data': {'directories': ['/var/lib/mumble-server']}}) diff --git a/plinth/modules/names/urls.py b/plinth/modules/names/urls.py index 607b4279f..29e6ba589 100644 --- a/plinth/modules/names/urls.py +++ b/plinth/modules/names/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the name services module """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^sys/names/$', views.index, name='index'), ] diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index dd630c3ce..9a0d0816e 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -84,10 +84,10 @@ def diagnose(): addresses = _get_interface_addresses(interfaces) for address in addresses: - results.append( - action_utils.diagnose_port_listening(53, 'tcp', address)) - results.append( - action_utils.diagnose_port_listening(53, 'udp', address)) + results.append(action_utils.diagnose_port_listening( + 53, 'tcp', address)) + results.append(action_utils.diagnose_port_listening( + 53, 'udp', address)) results.append(_diagnose_dnssec('4')) results.append(_diagnose_dnssec('6')) diff --git a/plinth/modules/networks/forms.py b/plinth/modules/networks/forms.py index 91cae9896..5cac3ab4c 100644 --- a/plinth/modules/networks/forms.py +++ b/plinth/modules/networks/forms.py @@ -34,17 +34,15 @@ class ConnectionTypeSelectForm(forms.Form): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.fields['connection_type'].widget.attrs.update({ - 'autofocus': 'autofocus' - }) + self.fields['connection_type'].widget.attrs.update( + {'autofocus': 'autofocus'}) class ConnectionForm(forms.Form): """Base form to create/edit a connection.""" name = forms.CharField(label=_('Connection Name')) interface = forms.ChoiceField( - label=_('Physical Interface'), - choices=(), + label=_('Physical Interface'), choices=(), help_text=_('The network device that this connection should be bound ' 'to.')) zone = forms.ChoiceField( @@ -52,90 +50,70 @@ class ConnectionForm(forms.Form): help_text=_('The firewall zone will control which services are ' 'available over this interfaces. Select Internal only ' 'for trusted networks.'), - choices=[('external', _('External')), - ('internal', _('Internal'))]) + choices=[('external', _('External')), ('internal', _('Internal'))]) ipv4_method = forms.ChoiceField( - label=_('IPv4 Addressing Method'), - help_text=format_lazy( + label=_('IPv4 Addressing Method'), help_text=format_lazy( ugettext_lazy( '"Automatic" method will make {box_name} acquire ' 'configuration from this network making it a client. "Shared" ' 'method will make {box_name} act as a router, configure ' 'clients on this network and share its Internet connection.'), box_name=ugettext_lazy(cfg.box_name)), - choices=[('auto', _('Automatic (DHCP)')), - ('shared', _('Shared')), - ('manual', _('Manual')), - ('disabled', _('Disabled'))]) + choices=[('auto', _('Automatic (DHCP)')), ('shared', _('Shared')), + ('manual', _('Manual')), ('disabled', _('Disabled'))]) ipv4_address = forms.CharField( - label=_('Address'), - validators=[validators.validate_ipv4_address], + label=_('Address'), validators=[validators.validate_ipv4_address], required=False) ipv4_netmask = forms.CharField( label=_('Netmask'), help_text=_('Optional value. If left blank, a default netmask ' 'based on the address will be used.'), - validators=[validators.validate_ipv4_address], - required=False) + validators=[validators.validate_ipv4_address], required=False) ipv4_gateway = forms.CharField( - label=_('Gateway'), - help_text=_('Optional value.'), - validators=[validators.validate_ipv4_address], - required=False) + label=_('Gateway'), help_text=_('Optional value.'), + validators=[validators.validate_ipv4_address], required=False) ipv4_dns = forms.CharField( label=_('DNS Server'), help_text=_('Optional value. If this value is given and IPv4 ' 'addressing method is "Automatic", the DNS Servers ' 'provided by a DHCP server will be ignored.'), - validators=[validators.validate_ipv4_address], - required=False) + validators=[validators.validate_ipv4_address], required=False) ipv4_second_dns = forms.CharField( label=_('Second DNS Server'), help_text=_('Optional value. If this value is given and IPv4 ' 'Addressing Method is "Automatic", the DNS Servers ' 'provided by a DHCP server will be ignored.'), - validators=[validators.validate_ipv4_address], - required=False) + validators=[validators.validate_ipv4_address], required=False) ipv6_method = forms.ChoiceField( - label=_('IPv6 Addressing Method'), - help_text=format_lazy( + label=_('IPv6 Addressing Method'), help_text=format_lazy( ugettext_lazy( '"Automatic" methods will make {box_name} acquire ' 'configuration from this network making it a client.'), box_name=ugettext_lazy(cfg.box_name)), - choices=[('auto', _('Automatic')), - ('dhcp', _('Automatic, DHCP only')), - ('manual', _('Manual')), - ('ignore', _('Ignore'))]) + choices=[('auto', _('Automatic')), ('dhcp', _('Automatic, DHCP only')), + ('manual', _('Manual')), ('ignore', _('Ignore'))]) ipv6_address = forms.CharField( - label=_('Address'), - validators=[validators.validate_ipv6_address], - required=False) - ipv6_prefix = forms.IntegerField( - label=_('Prefix'), - help_text=_('Value between 1 and 128.'), - min_value=1, - max_value=128, + label=_('Address'), validators=[validators.validate_ipv6_address], required=False) + ipv6_prefix = forms.IntegerField(label=_('Prefix'), + help_text=_('Value between 1 and 128.'), + min_value=1, max_value=128, + required=False) ipv6_gateway = forms.CharField( - label=_('Gateway'), - help_text=_('Optional value.'), - validators=[validators.validate_ipv6_address], - required=False) + label=_('Gateway'), help_text=_('Optional value.'), + validators=[validators.validate_ipv6_address], required=False) ipv6_dns = forms.CharField( label=_('DNS Server'), help_text=_('Optional value. If this value is given and IPv6 ' 'addressing method is "Automatic", the DNS Servers ' 'provided by a DHCP server will be ignored.'), - validators=[validators.validate_ipv6_address], - required=False) + validators=[validators.validate_ipv6_address], required=False) ipv6_second_dns = forms.CharField( label=_('Second DNS Server'), help_text=_('Optional value. If this value is given and IPv6 ' 'Addressing Method is "Automatic", the DNS Servers ' 'provided by a DHCP server will be ignored.'), - validators=[validators.validate_ipv6_address], - required=False) + validators=[validators.validate_ipv6_address], required=False) @staticmethod def _get_interface_choices(device_type): @@ -143,8 +121,8 @@ class ConnectionForm(forms.Form): interfaces = network.get_interface_list(device_type) choices = [('', _('-- select --'))] for interface, mac in interfaces.items(): - display_string = '{interface} ({mac})'.format(interface=interface, - mac=mac) + display_string = '{interface} ({mac})'.format( + interface=interface, mac=mac) choices.append((interface, display_string)) return choices @@ -258,33 +236,29 @@ class PPPoEForm(EthernetForm): class WifiForm(ConnectionForm): """Form to create/edit a Wi-Fi connection.""" - field_order = ['name', 'interface', 'zone', 'ssid', 'mode', 'band', - 'channel', 'bssid', 'auth_mode', 'passphrase', - 'ipv4_method', 'ipv4_address', 'ipv4_netmask', - 'ipv4_gateway', 'ipv4_dns', 'ipv4_second_dns', - 'ipv6_method', 'ipv6_address', 'ipv6_prefix', - 'ipv6_gateway', 'ipv6_dns', 'ipv6_second_dns'] + field_order = [ + 'name', 'interface', 'zone', 'ssid', 'mode', 'band', 'channel', + 'bssid', 'auth_mode', 'passphrase', 'ipv4_method', 'ipv4_address', + 'ipv4_netmask', 'ipv4_gateway', 'ipv4_dns', 'ipv4_second_dns', + 'ipv6_method', 'ipv6_address', 'ipv6_prefix', 'ipv6_gateway', + 'ipv6_dns', 'ipv6_second_dns' + ] - ssid = forms.CharField( - label=_('SSID'), - help_text=_('The visible name of the network.')) + ssid = forms.CharField(label=_('SSID'), + help_text=_('The visible name of the network.')) mode = forms.ChoiceField( - label=_('Mode'), - choices=[('infrastructure', _('Infrastructure')), - ('ap', _('Access Point')), - ('adhoc', _('Ad-hoc'))]) + label=_('Mode'), choices=[('infrastructure', _('Infrastructure')), + ('ap', _('Access Point')), + ('adhoc', _('Ad-hoc'))]) band = forms.ChoiceField( - label=_('Frequency Band'), - choices=[('auto', _('Automatic')), - ('a', _('A (5 GHz)')), - ('bg', _('B/G (2.4 GHz)'))]) + label=_('Frequency Band'), choices=[('auto', _('Automatic')), + ('a', _('A (5 GHz)')), + ('bg', _('B/G (2.4 GHz)'))]) channel = forms.IntegerField( label=_('Channel'), help_text=_('Optional value. Wireless channel in the selected ' 'frequency band to restrict to. Blank or 0 value means ' - 'automatic selection.'), - min_value=0, - max_value=255, + 'automatic selection.'), min_value=0, max_value=255, required=False) bssid = forms.RegexField( label=_('BSSID'), @@ -292,18 +266,15 @@ class WifiForm(ConnectionForm): 'When connecting to an access point, connect only if the ' 'BSSID of the access point matches the one provided. ' 'Example: 00:11:22:aa:bb:cc.'), - regex=r'^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$', - required=False) + regex=r'^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$', required=False) auth_mode = forms.ChoiceField( label=_('Authentication Mode'), help_text=_('Select WPA if the wireless network is secured and \ requires clients to have the password to connect.'), - choices=[('wpa', _('WPA')), - ('open', _('Open'))]) - passphrase = forms.CharField( - label=_('Passphrase'), - validators=[validators.MinLengthValidator(8)], - required=False) + choices=[('wpa', _('WPA')), ('open', _('Open'))]) + passphrase = forms.CharField(label=_('Passphrase'), + validators=[validators.MinLengthValidator(8)], + required=False) def __init__(self, *args, **kwargs): """Initialize the form, populate interface choices.""" diff --git a/plinth/modules/networks/urls.py b/plinth/modules/networks/urls.py index 6e93f68f1..caab595d0 100644 --- a/plinth/modules/networks/urls.py +++ b/plinth/modules/networks/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the Network module """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import networks as views - urlpatterns = [ url(r'^sys/networks/$', views.index, name='index'), url(r'^sys/networks/(?P[\w.@+-]+)/show/$', views.show, name='show'), @@ -38,9 +36,9 @@ urlpatterns = [ url(r'^sys/networks/add/ethernet/$', views.add_ethernet, name='add_ethernet'), url(r'^sys/networks/add/pppoe/$', views.add_pppoe, name='add_pppoe'), - url(r'^sys/networks/add/wifi/(?:(?P[^/]+)/' - r'(?P[^/]+)/)?$', - views.add_wifi, name='add_wifi'), + url( + r'^sys/networks/add/wifi/(?:(?P[^/]+)/' + r'(?P[^/]+)/)?$', views.add_wifi, name='add_wifi'), url(r'^sys/networks/(?P[\w.@+-]+)/delete/$', views.delete, name='delete'), ] diff --git a/plinth/modules/openvpn/forms.py b/plinth/modules/openvpn/forms.py index c77b05ea7..e1da3cdf1 100644 --- a/plinth/modules/openvpn/forms.py +++ b/plinth/modules/openvpn/forms.py @@ -24,6 +24,5 @@ from django.utils.translation import ugettext_lazy as _ class OpenVpnForm(forms.Form): # pylint: disable=W0232 """OpenVPN configuration form.""" - enabled = forms.BooleanField( - label=_('Enable OpenVPN server'), - required=False) + enabled = forms.BooleanField(label=_('Enable OpenVPN server'), + required=False) diff --git a/plinth/modules/openvpn/urls.py b/plinth/modules/openvpn/urls.py index 356d23618..af647bebe 100644 --- a/plinth/modules/openvpn/urls.py +++ b/plinth/modules/openvpn/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the OpenVPN module. """ @@ -24,7 +23,6 @@ from django.conf.urls import url from plinth.utils import non_admin_view from . import views - urlpatterns = [ url(r'^apps/openvpn/$', views.index, name='index'), url(r'^apps/openvpn/setup/$', views.setup, name='setup'), diff --git a/plinth/modules/pagekite/tests/test_pagekite.py b/plinth/modules/pagekite/tests/test_pagekite.py index 46d0c387d..11a905dfc 100644 --- a/plinth/modules/pagekite/tests/test_pagekite.py +++ b/plinth/modules/pagekite/tests/test_pagekite.py @@ -14,36 +14,42 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Test modules for Pagekite functions. """ from plinth.modules.pagekite import utils - _tests = [ { 'line': 'https/8080:*.@kitename:localhost:8080:@kitesecret', - 'params': {'kitename': '*.@kitename', 'backend_host': 'localhost', - 'secret': '@kitesecret', 'protocol': 'https/8080', - 'backend_port': '8080'} + 'params': { + 'kitename': '*.@kitename', + 'backend_host': 'localhost', + 'secret': '@kitesecret', + 'protocol': 'https/8080', + 'backend_port': '8080' + } }, { 'line': 'https:*.@kitename:localhost:80:@kitesecret', - 'params': {'protocol': 'https', - 'kitename': '*.@kitename', - 'backend_port': '80', - 'backend_host': 'localhost', - 'secret': '@kitesecret'} + 'params': { + 'protocol': 'https', + 'kitename': '*.@kitename', + 'backend_port': '80', + 'backend_host': 'localhost', + 'secret': '@kitesecret' + } }, { 'line': 'raw/22:@kitename:localhost:22:@kitesecret', - 'params': {'protocol': 'raw/22', - 'kitename': '@kitename', - 'backend_port': '22', - 'backend_host': 'localhost', - 'secret': '@kitesecret'} + 'params': { + 'protocol': 'raw/22', + 'kitename': '@kitename', + 'backend_port': '22', + 'backend_host': 'localhost', + 'secret': '@kitesecret' + } }, ] diff --git a/plinth/modules/power/urls.py b/plinth/modules/power/urls.py index 859d40c3c..3292c8104 100644 --- a/plinth/modules/power/urls.py +++ b/plinth/modules/power/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the power module. """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^sys/power/$', views.index, name='index'), url(r'^sys/power/restart$', views.restart, name='restart'), diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index 6f02ff45c..d5bc72ca1 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -110,7 +110,6 @@ class RadicaleApp(app_module.App): class RadicaleWebserver(Webserver): """Webserver enable/disable behavior specific for radicale.""" - @property def web_name(self): """Return web configuration name based on radicale version.""" @@ -127,7 +126,6 @@ class RadicaleWebserver(Webserver): class RadicaleUwsgi(Uwsgi): """uWSGI enable/disable behavior specific for radicale.""" - def is_enabled(self): """Return whether the uWSGI configuration is enabled if version>=2.""" package_version = get_package_version() @@ -152,7 +150,6 @@ class RadicaleUwsgi(Uwsgi): class RadicaleDaemon(Daemon): """Daemon enable/disable behavior specific for radicale.""" - @staticmethod def _is_old_radicale(): """Return whether radicale is less than version 2.""" @@ -251,8 +248,8 @@ def disable(): def load_augeas(): """Prepares the augeas.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) # INI file lens aug.set('/augeas/load/Puppet/lens', 'Puppet.lns') diff --git a/plinth/modules/radicale/manifest.py b/plinth/modules/radicale/manifest.py index 883caebb4..7eafdc54c 100644 --- a/plinth/modules/radicale/manifest.py +++ b/plinth/modules/radicale/manifest.py @@ -87,8 +87,7 @@ clients = validate([{ 'name': 'evolution' }] }, { - 'name': - _('Radicale'), + 'name': _('Radicale'), 'platforms': [{ 'type': 'web', 'url': '/radicale/' diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index dd476f916..fe27df7d3 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -80,8 +80,7 @@ class RoundcubeApp(app_module.App): shortcut = frontpage.Shortcut('shortcut-roundcube', name, short_description=short_description, - icon=icon_filename, - url='/roundcube/', + icon=icon_filename, url='/roundcube/', clients=clients, login_required=True) self.add(shortcut) diff --git a/plinth/modules/searx/__init__.py b/plinth/modules/searx/__init__.py index 38c562a0e..98bb00189 100644 --- a/plinth/modules/searx/__init__.py +++ b/plinth/modules/searx/__init__.py @@ -29,7 +29,7 @@ from plinth.modules.apache.components import Uwsgi, Webserver from plinth.modules.firewall.components import Firewall from plinth.modules.users import register_group -from .manifest import PUBLIC_ACCESS_SETTING_FILE, backup, clients # noqa, pylint: disable=unused-import +from .manifest import PUBLIC_ACCESS_SETTING_FILE, backup, clients # noqa, pylint: disable=unused-import clients = clients @@ -99,7 +99,6 @@ class SearxApp(app_module.App): class SearxWebserverAuth(Webserver): """Component to handle Searx authentication webserver configuration.""" - def is_enabled(self): """Return if configuration is enabled or public access is enabled.""" return is_public_access_enabled() or super().is_enabled() diff --git a/plinth/modules/security/forms.py b/plinth/modules/security/forms.py index a5f791f4a..b87172c80 100644 --- a/plinth/modules/security/forms.py +++ b/plinth/modules/security/forms.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Forms for security module """ diff --git a/plinth/modules/security/manifest.py b/plinth/modules/security/manifest.py index 606e75da4..396019472 100644 --- a/plinth/modules/security/manifest.py +++ b/plinth/modules/security/manifest.py @@ -20,8 +20,7 @@ Application manifest for security. from plinth.modules.backups.api import validate as validate_backup -backup = validate_backup({ - 'config': { +backup = validate_backup( + {'config': { 'files': ['/etc/security/access.d/50freedombox.conf'] - } -}) + }}) diff --git a/plinth/modules/security/urls.py b/plinth/modules/security/urls.py index ffdd10c22..5dc728693 100644 --- a/plinth/modules/security/urls.py +++ b/plinth/modules/security/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the security module """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^sys/security/$', views.index, name='index'), url(r'^sys/security/report$', views.report, name='report'), diff --git a/plinth/modules/security/views.py b/plinth/modules/security/views.py index 3fbf5521b..9e44d786c 100644 --- a/plinth/modules/security/views.py +++ b/plinth/modules/security/views.py @@ -43,15 +43,11 @@ def index(request): else: form = SecurityForm(initial=status, prefix='security') - return TemplateResponse( - request, 'security.html', { - 'name': - _('Security'), - 'manual_page': - security.manual_page, - 'form': - form, - }) + return TemplateResponse(request, 'security.html', { + 'name': _('Security'), + 'manual_page': security.manual_page, + 'form': form, + }) def get_status(request): diff --git a/plinth/modules/shadowsocks/forms.py b/plinth/modules/shadowsocks/forms.py index 761a56cc2..6f143a328 100644 --- a/plinth/modules/shadowsocks/forms.py +++ b/plinth/modules/shadowsocks/forms.py @@ -39,7 +39,6 @@ METHODS = [('chacha20-ietf-poly1305', class TrimmedCharField(forms.CharField): """Trim the contents of a CharField""" - def clean(self, value): """Clean and validate the field value""" if value: @@ -50,12 +49,12 @@ class TrimmedCharField(forms.CharField): class ShadowsocksForm(AppForm): """Shadowsocks configuration form""" - server = TrimmedCharField( - label=_('Server'), help_text=_('Server hostname or IP address')) + server = TrimmedCharField(label=_('Server'), + help_text=_('Server hostname or IP address')) - server_port = forms.IntegerField( - label=_('Server port'), min_value=0, max_value=65535, - help_text=_('Server port number')) + server_port = forms.IntegerField(label=_('Server port'), min_value=0, + max_value=65535, + help_text=_('Server port number')) password = forms.CharField( label=_('Password'), help_text=_('Password used to encrypt data. ' diff --git a/plinth/modules/snapshot/__init__.py b/plinth/modules/snapshot/__init__.py index 5587035f3..82501aa0f 100644 --- a/plinth/modules/snapshot/__init__.py +++ b/plinth/modules/snapshot/__init__.py @@ -100,8 +100,8 @@ def setup(helper, old_version=None): def load_augeas(): """Initialize Augeas.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) # shell-script config file lens aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') diff --git a/plinth/modules/snapshot/forms.py b/plinth/modules/snapshot/forms.py index 277096ecf..ae92c6806 100644 --- a/plinth/modules/snapshot/forms.py +++ b/plinth/modules/snapshot/forms.py @@ -38,9 +38,10 @@ class SnapshotForm(forms.Form): choices=[('yes', 'Enabled'), ('no', 'Disabled')]) enable_software_snapshots = forms.ChoiceField( - label=_('Software Installation Snapshots'), help_text=_( - 'Enable or disable snapshots before and after software ' - 'installation'), choices=[('yes', 'Enabled'), ('no', 'Disabled')]) + label=_('Software Installation Snapshots'), + help_text=_('Enable or disable snapshots before and after software ' + 'installation'), choices=[('yes', 'Enabled'), + ('no', 'Disabled')]) hourly_limit = forms.IntegerField( label=_('Hourly Snapshots Limit'), min_value=0, diff --git a/plinth/modules/snapshot/views.py b/plinth/modules/snapshot/views.py index cf0b11fea..92f303c7c 100644 --- a/plinth/modules/snapshot/views.py +++ b/plinth/modules/snapshot/views.py @@ -121,7 +121,6 @@ def manage(request): def update_configuration(request, old_status, new_status): """Update configuration of snapshots.""" - def make_config(args): key, stamp = args[0], args[1] if old_status[key] != new_status[key]: @@ -158,8 +157,9 @@ def update_configuration(request, old_status, new_status): except ActionError as exception: messages.error( request, - _('Action error: {0} [{1}] [{2}]').format( - exception.args[0], exception.args[1], exception.args[2])) + _('Action error: {0} [{1}] [{2}]').format(exception.args[0], + exception.args[1], + exception.args[2])) def delete_selected(request): diff --git a/plinth/modules/ssh/manifest.py b/plinth/modules/ssh/manifest.py index 0391f5a76..0f3cd172e 100644 --- a/plinth/modules/ssh/manifest.py +++ b/plinth/modules/ssh/manifest.py @@ -23,11 +23,9 @@ from plinth.modules.backups.api import validate as validate_backup backup = validate_backup({ 'secrets': { 'files': [ - '/etc/ssh/ssh_host_ecdsa_key', - '/etc/ssh/ssh_host_ecdsa_key.pub', + '/etc/ssh/ssh_host_ecdsa_key', '/etc/ssh/ssh_host_ecdsa_key.pub', '/etc/ssh/ssh_host_ed25519_key', - '/etc/ssh/ssh_host_ed25519_key.pub', - '/etc/ssh/ssh_host_rsa_key', + '/etc/ssh/ssh_host_ed25519_key.pub', '/etc/ssh/ssh_host_rsa_key', '/etc/ssh/ssh_host_rsa_key.pub' ] } diff --git a/plinth/modules/sso/__init__.py b/plinth/modules/sso/__init__.py index 88d3200ed..3e3bef6f1 100644 --- a/plinth/modules/sso/__init__.py +++ b/plinth/modules/sso/__init__.py @@ -30,7 +30,10 @@ depends = ['security', 'apache'] name = _('Single Sign On') managed_packages = [ - 'libapache2-mod-auth-pubtkt', 'openssl', 'python3-openssl', 'flite', + 'libapache2-mod-auth-pubtkt', + 'openssl', + 'python3-openssl', + 'flite', ] diff --git a/plinth/modules/sso/urls.py b/plinth/modules/sso/urls.py index 89ca2ec2f..5bad3db8e 100644 --- a/plinth/modules/sso/urls.py +++ b/plinth/modules/sso/urls.py @@ -25,8 +25,8 @@ from stronghold.decorators import public from plinth.utils import non_admin_view urlpatterns = [ - url(r'^accounts/sso/login/$', - public(SSOLoginView.as_view()), name='sso-login'), + url(r'^accounts/sso/login/$', public(SSOLoginView.as_view()), + name='sso-login'), url(r'^accounts/sso/refresh/$', non_admin_view(refresh), name='sso-refresh'), ] diff --git a/plinth/modules/sso/views.py b/plinth/modules/sso/views.py index ef3c98aa0..7991a0581 100644 --- a/plinth/modules/sso/views.py +++ b/plinth/modules/sso/views.py @@ -82,8 +82,8 @@ class CaptchaLoginView(LoginView): form_class = AuthenticationForm def dispatch(self, request, *args, **kwargs): - response = super(CaptchaLoginView, self).dispatch( - request, *args, **kwargs) + response = super(CaptchaLoginView, + self).dispatch(request, *args, **kwargs) if not request.POST: return response diff --git a/plinth/modules/storage/__init__.py b/plinth/modules/storage/__init__.py index 311d271dc..8605d7c6e 100644 --- a/plinth/modules/storage/__init__.py +++ b/plinth/modules/storage/__init__.py @@ -193,8 +193,9 @@ def is_expandable(device): return False try: - output = actions.superuser_run( - 'storage', ['is-partition-expandable', device], log_error=False) + output = actions.superuser_run('storage', + ['is-partition-expandable', device], + log_error=False) except actions.ActionError: return False diff --git a/plinth/modules/storage/tests/test_storage.py b/plinth/modules/storage/tests/test_storage.py index 0fab834f5..4edeec01e 100644 --- a/plinth/modules/storage/tests/test_storage.py +++ b/plinth/modules/storage/tests/test_storage.py @@ -36,7 +36,6 @@ def _get_partition_device(device, partition_number): class Disk(): """Context manager to create/destroy a disk.""" - def __init__(self, test_case, size, disk_info, file_system_info=None): """Initialize the context manager object.""" self.size = size @@ -120,7 +119,6 @@ class Disk(): class TestActions: """Test all actions related to storage.""" - @pytest.mark.usefixtures('needs_root') def test_simple_case(self): """Test a simple with no complications""" diff --git a/plinth/modules/syncthing/urls.py b/plinth/modules/syncthing/urls.py index 63a7bee1e..9cf71bdad 100644 --- a/plinth/modules/syncthing/urls.py +++ b/plinth/modules/syncthing/urls.py @@ -26,10 +26,10 @@ from plinth.views import AppView urlpatterns = [ url( r'^apps/syncthing/$', - AppView.as_view( - app_id='syncthing', name=syncthing.name, - diagnostics_module_name='syncthing', - description=syncthing.description, clients=syncthing.clients, - manual_page=syncthing.manual_page, show_status_block=True), - name='index'), + AppView.as_view(app_id='syncthing', name=syncthing.name, + diagnostics_module_name='syncthing', + description=syncthing.description, + clients=syncthing.clients, + manual_page=syncthing.manual_page, + show_status_block=True), name='index'), ] diff --git a/plinth/modules/tahoe/__init__.py b/plinth/modules/tahoe/__init__.py index 9983845b1..bae49c55d 100644 --- a/plinth/modules/tahoe/__init__.py +++ b/plinth/modules/tahoe/__init__.py @@ -76,9 +76,10 @@ class TahoeApp(app_module.App): parent_url_name='apps', advanced=True) self.add(menu_item) - shortcut = frontpage.Shortcut( - 'shortcut-tahoe', name, short_description=short_description, - icon=icon_filename, url=None, login_required=True) + shortcut = frontpage.Shortcut('shortcut-tahoe', name, + short_description=short_description, + icon=icon_filename, url=None, + login_required=True) self.add(shortcut) firewall = Firewall('firewall-tahoe', name, ports=['tahoe-plinth'], @@ -94,7 +95,6 @@ class TahoeApp(app_module.App): class Shortcut(frontpage.Shortcut): """Frontpage shortcut to use configured domain name for URL.""" - def enable(self): """Set the proper shortcut URL when enabled.""" super().enable() diff --git a/plinth/modules/tahoe/errors.py b/plinth/modules/tahoe/errors.py index c25de0279..9fff21e6a 100644 --- a/plinth/modules/tahoe/errors.py +++ b/plinth/modules/tahoe/errors.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Errors for Tahoe-LAFS module """ diff --git a/plinth/modules/tor/forms.py b/plinth/modules/tor/forms.py index 41a38807c..00dab52c9 100644 --- a/plinth/modules/tor/forms.py +++ b/plinth/modules/tor/forms.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Forms for configuring Tor. """ @@ -86,55 +85,44 @@ def bridges_validator(bridges): class TorForm(forms.Form): # pylint: disable=W0232 """Tor configuration form.""" - enabled = forms.BooleanField( - label=_('Enable Tor'), - required=False) + enabled = forms.BooleanField(label=_('Enable Tor'), required=False) use_upstream_bridges = forms.BooleanField( label=_('Use upstream bridges to connect to Tor network'), - required=False, - help_text=_( + required=False, help_text=_( 'When enabled, the bridges configured below will be used to ' 'connect to the Tor network. Use this option if your Internet ' 'Service Provider (ISP) blocks or censors connections to the ' 'Tor Network. This will disable relay modes.')) upstream_bridges = TrimmedCharField( - widget=widgets.Textarea, - label=_('Upstream bridges'), - required=False, + widget=widgets.Textarea, label=_('Upstream bridges'), required=False, help_text=_( 'You can get some bridges from ' 'https://bridges.torproject.org/ and copy/paste the bridge ' 'information here. Currently supported transports are none, ' - 'obfs3, obfs4 and scamblesuit.'), - validators=[bridges_validator]) + 'obfs3, obfs4 and scamblesuit.'), validators=[bridges_validator]) relay_enabled = forms.BooleanField( - label=_('Enable Tor relay'), - required=False, - help_text=format_lazy(_( - 'When enabled, your {box_name} will run a Tor relay and donate ' - 'bandwidth to the Tor network. Do this if you have more than ' - '2 megabits/s of upload and download bandwidth.'), - box_name=_(cfg.box_name))) + label=_('Enable Tor relay'), required=False, help_text=format_lazy( + _('When enabled, your {box_name} will run a Tor relay and donate ' + 'bandwidth to the Tor network. Do this if you have more than ' + '2 megabits/s of upload and download bandwidth.'), + box_name=_(cfg.box_name))) bridge_relay_enabled = forms.BooleanField( - label=_('Enable Tor bridge relay'), - required=False, - help_text=format_lazy(_( - 'When enabled, relay information is published in the Tor bridge ' - 'database instead of public Tor relay database making it harder ' - 'to censor this node. This helps others circumvent censorship.'), - box_name=_(cfg.box_name))) + label=_('Enable Tor bridge relay'), required=False, + help_text=format_lazy( + _('When enabled, relay information is published in the Tor bridge ' + 'database instead of public Tor relay database making it harder ' + 'to censor this node. This helps others circumvent censorship.'), + box_name=_(cfg.box_name))) hs_enabled = forms.BooleanField( - label=_('Enable Tor Onion Service'), - required=False, - help_text=format_lazy(_( - 'An onion service will allow {box_name} to provide selected ' - 'services (such as wiki or chat) without revealing its ' - 'location. Do not use this for strong anonymity yet.'), - box_name=_(cfg.box_name))) + label=_('Enable Tor Hidden Service'), required=False, + help_text=format_lazy( + _('A hidden service will allow {box_name} to provide selected ' + 'services (such as wiki or chat) without revealing its ' + 'location. Do not use this for strong anonymity yet.'), + box_name=_(cfg.box_name))) apt_transport_tor_enabled = forms.BooleanField( - label=_('Download software packages over Tor'), - required=False, + label=_('Download software packages over Tor'), required=False, help_text=_('When enabled, software will be downloaded over the Tor ' 'network for installations and upgrades. This adds a ' 'degree of privacy and security during software ' @@ -147,8 +135,10 @@ class TorForm(forms.Form): # pylint: disable=W0232 upstream_bridges = cleaned_data.get('upstream_bridges') if use_upstream_bridges and not upstream_bridges: - self.add_error('upstream_bridges', ValidationError(_( - 'Specify at least one upstream bridge to use upstream ' - 'bridges.'), code='invalid')) + self.add_error( + 'upstream_bridges', + ValidationError( + _('Specify at least one upstream bridge to use upstream ' + 'bridges.'), code='invalid')) return cleaned_data diff --git a/plinth/modules/tor/tests/test_tor.py b/plinth/modules/tor/tests/test_tor.py index 1226f52af..50eba1839 100644 --- a/plinth/modules/tor/tests/test_tor.py +++ b/plinth/modules/tor/tests/test_tor.py @@ -28,7 +28,6 @@ from plinth.modules.tor import forms, utils class TestTor: """Test cases for testing the Tor module.""" - @staticmethod @pytest.mark.usefixtures('needs_root') def test_is_apt_transport_tor_enabled(): @@ -51,7 +50,6 @@ class TestTor: class TestTorForm: """Test whether Tor configration form works.""" - @staticmethod def test_bridge_validator(): """Test upstream bridges' form field validator.""" diff --git a/plinth/modules/tor/urls.py b/plinth/modules/tor/urls.py index 2a14d19a4..28ce8bed9 100644 --- a/plinth/modules/tor/urls.py +++ b/plinth/modules/tor/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the Tor module. """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^apps/tor/$', views.index, name='index'), ] diff --git a/plinth/modules/tor/utils.py b/plinth/modules/tor/utils.py index 4b6b04b08..0c721214b 100644 --- a/plinth/modules/tor/utils.py +++ b/plinth/modules/tor/utils.py @@ -104,8 +104,8 @@ def get_real_apt_uri_path(aug, path): def get_augeas(): """Return an instance of Augeaus for processing APT configuration.""" - aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) aug.set('/augeas/load/Aptsources/lens', 'Aptsources.lns') aug.set('/augeas/load/Aptsources/incl[last() + 1]', '/etc/apt/sources.list') diff --git a/plinth/modules/transmission/views.py b/plinth/modules/transmission/views.py index 4a7a73edb..ab90cba45 100644 --- a/plinth/modules/transmission/views.py +++ b/plinth/modules/transmission/views.py @@ -50,9 +50,7 @@ class TransmissionAppView(views.AppView): ['get-configuration']) configuration = json.loads(configuration) status.update({ - key.translate(str.maketrans({ - '-': '_' - })): value + key.translate(str.maketrans({'-': '_'})): value for key, value in configuration.items() }) status['hostname'] = socket.gethostname() diff --git a/plinth/modules/upgrades/manifest.py b/plinth/modules/upgrades/manifest.py index f3fe5eb46..c1d95923c 100644 --- a/plinth/modules/upgrades/manifest.py +++ b/plinth/modules/upgrades/manifest.py @@ -20,8 +20,7 @@ Application manifest for upgrades. from plinth.modules.backups.api import validate as validate_backup -backup = validate_backup({ - 'config': { +backup = validate_backup( + {'config': { 'files': ['/etc/apt/apt.conf.d/20auto-upgrades'] - } -}) + }}) diff --git a/plinth/modules/upgrades/urls.py b/plinth/modules/upgrades/urls.py index 070651f7f..685a22295 100644 --- a/plinth/modules/upgrades/urls.py +++ b/plinth/modules/upgrades/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the upgrades module """ @@ -23,7 +22,6 @@ from django.conf.urls import url from . import views - urlpatterns = [ url(r'^sys/upgrades/$', views.UpgradesConfigurationView.as_view(), name='index'), diff --git a/plinth/modules/users/forms.py b/plinth/modules/users/forms.py index 8f81b0d59..0d415a95a 100644 --- a/plinth/modules/users/forms.py +++ b/plinth/modules/users/forms.py @@ -47,14 +47,13 @@ def get_group_choices(): class ValidNewUsernameCheckMixin(object): """Mixin to check if a username is valid for created new user.""" - def clean_username(self): """Check for username collisions with system users.""" username = self.cleaned_data['username'] if self.instance.username != username and \ not self.is_valid_new_username(): - raise ValidationError( - _('Username is taken or is reserved.'), code='invalid') + raise ValidationError(_('Username is taken or is reserved.'), + code='invalid') return username @@ -147,10 +146,8 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, plinth.forms.LanguageSelectionFormMixin, forms.ModelForm): """When user info is changed, also updates LDAP user.""" ssh_keys = forms.CharField( - label=ugettext_lazy('Authorized SSH Keys'), - required=False, - widget=forms.Textarea, - help_text=ugettext_lazy( + label=ugettext_lazy('Authorized SSH Keys'), required=False, + widget=forms.Textarea, help_text=ugettext_lazy( 'Setting an SSH public key will allow this user to ' 'securely log in to the system without using a ' 'password. You may enter multiple keys, one on each ' @@ -283,14 +280,12 @@ class UserUpdateForm(ValidNewUsernameCheckMixin, class UserChangePasswordForm(SetPasswordForm): """Custom form that also updates password for LDAP users.""" - def __init__(self, request, *args, **kwargs): """Initialize the form with extra request argument.""" self.request = request super(UserChangePasswordForm, self).__init__(*args, **kwargs) - self.fields['new_password1'].widget.attrs.update({ - 'autofocus': 'autofocus' - }) + self.fields['new_password1'].widget.attrs.update( + {'autofocus': 'autofocus'}) def save(self, commit=True): """Save the user model and change LDAP password as well.""" @@ -310,7 +305,6 @@ class UserChangePasswordForm(SetPasswordForm): class FirstBootForm(ValidNewUsernameCheckMixin, auth.forms.UserCreationForm): """User module first boot step: create a new admin user.""" - def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super().__init__(*args, **kwargs) diff --git a/plinth/modules/users/tests/test_actions.py b/plinth/modules/users/tests/test_actions.py index 72dda8cc8..7ad3f60e0 100644 --- a/plinth/modules/users/tests/test_actions.py +++ b/plinth/modules/users/tests/test_actions.py @@ -81,8 +81,8 @@ def _try_login_to_ssh(username, password, returncode=0): def _action_file(): """Return the path to the 'users' actions file.""" current_directory = pathlib.Path(__file__).parent - return str( - current_directory / '..' / '..' / '..' / '..' / 'actions' / 'users') + return str(current_directory / '..' / '..' / '..' / '..' / 'actions' / + 'users') @pytest.fixture(name='disable_restricted_access', autouse=True) diff --git a/plinth/modules/users/views.py b/plinth/modules/users/views.py index 284b1ab90..f2696bb3c 100644 --- a/plinth/modules/users/views.py +++ b/plinth/modules/users/views.py @@ -40,7 +40,6 @@ from .forms import (CreateUserForm, FirstBootForm, UserChangePasswordForm, class ContextMixin(object): """Mixin to add 'title' to the template context.""" - def get_context_data(self, **kwargs): """Add self.title to template context.""" context = super(ContextMixin, self).get_context_data(**kwargs) diff --git a/plinth/network.py b/plinth/network.py index a5048444a..e45e3867d 100644 --- a/plinth/network.py +++ b/plinth/network.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Helper functions for working with network manager. """ @@ -103,9 +102,8 @@ def get_status_from_connection(connection): primary_connection = nm.Client.new(None).get_primary_connection() status['primary'] = ( - primary_connection and - primary_connection.get_uuid() == connection.get_uuid() - ) + primary_connection + and primary_connection.get_uuid() == connection.get_uuid()) return status @@ -131,18 +129,20 @@ def get_status_from_device(device): ip4_config = device.get_ip4_config() if ip4_config: addresses = ip4_config.get_addresses() - status['ip4']['addresses'] = [{'address': address.get_address(), - 'prefix': address.get_prefix()} - for address in addresses] + status['ip4']['addresses'] = [{ + 'address': address.get_address(), + 'prefix': address.get_prefix() + } for address in addresses] status['ip4']['gateway'] = ip4_config.get_gateway() status['ip4']['nameservers'] = ip4_config.get_nameservers() ip6_config = device.get_ip6_config() if ip6_config: addresses = ip6_config.get_addresses() - status['ip6']['addresses'] = [{'address': address.get_address(), - 'prefix': address.get_prefix()} - for address in addresses] + status['ip6']['addresses'] = [{ + 'address': address.get_address(), + 'prefix': address.get_prefix() + } for address in addresses] status['ip6']['gateway'] = ip6_config.get_gateway() status['ip6']['nameservers'] = ip6_config.get_nameservers() @@ -188,8 +188,19 @@ def _get_wifi_channel_from_frequency(frequency): # channel numbers. Search for a better solution! Even 5GHz is # not included yet. Only the plain frequency will show up on 5GHz # AP's. - channel_map = {2412: 1, 2417: 2, 2422: 3, 2427: 4, 2432: 5, 2437: 6, - 2442: 7, 2447: 8, 2452: 9, 2457: 10, 2462: 11} + channel_map = { + 2412: 1, + 2417: 2, + 2422: 3, + 2427: 4, + 2432: 5, + 2437: 6, + 2442: 7, + 2447: 8, + 2452: 9, + 2457: 10, + 2462: 11 + } try: return channel_map[frequency] except KeyError: @@ -207,8 +218,8 @@ def get_connection_list(): for connection in client.get_connections(): # Display a friendly type name if known. connection_type = connection.get_connection_type() - connection_type_name = CONNECTION_TYPE_NAMES.get(connection_type, - connection_type) + connection_type_name = CONNECTION_TYPE_NAMES.get( + connection_type, connection_type) settings_connection = connection.get_setting_connection() zone = settings_connection.get_zone() @@ -250,8 +261,10 @@ def get_active_connection(connection_uuid): found. """ connections = nm.Client.new(None).get_active_connections() - connections = {connection.get_uuid(): connection - for connection in connections} + connections = { + connection.get_uuid(): connection + for connection in connections + } try: return connections[connection_uuid] except KeyError: @@ -458,8 +471,8 @@ def activate_connection(connection_uuid): client = nm.Client.new(None) for device in client.get_devices(): if device.get_iface() == interface: - client.activate_connection_async( - connection, device, '/', None, _callback, None) + client.activate_connection_async(connection, device, '/', None, + _callback, None) break else: raise DeviceNotFound(connection) @@ -502,6 +515,7 @@ def wifi_scan(): access_points.append({ 'interface_name': device.get_iface(), 'ssid': ssid_string, - 'strength': access_point.get_strength()}) + 'strength': access_point.get_strength() + }) return access_points diff --git a/plinth/package.py b/plinth/package.py index a278a57dd..d2dd81d62 100644 --- a/plinth/package.py +++ b/plinth/package.py @@ -32,7 +32,6 @@ logger = logging.getLogger(__name__) class PackageException(Exception): """A package operation has failed.""" - def __init__(self, error_string=None, error_details=None, *args, **kwargs): """Store apt-get error string and details.""" super(PackageException, self).__init__(*args, **kwargs) @@ -48,7 +47,6 @@ class PackageException(Exception): class Transaction(object): """Information about an ongoing transaction.""" - def __init__(self, module_name, package_names): """Initialize transaction object. diff --git a/plinth/setup.py b/plinth/setup.py index 4b0897e9f..42b27636d 100644 --- a/plinth/setup.py +++ b/plinth/setup.py @@ -43,7 +43,6 @@ _force_upgrader = None class Helper(object): """Helper routines for modules to show progress.""" - def __init__(self, module_name, module): """Initialize the object.""" self.module_name = module_name @@ -421,11 +420,9 @@ class ForceUpgrader(): class TemporaryFailure(Exception): """Raised when upgrade fails but can be tried again immediately.""" - class PermanentFailure(Exception): """Raised when upgrade fails and there is nothing more we wish to do. """ - def __init__(self): """Initialize the force upgrader.""" if plinth.cfg.develop: diff --git a/plinth/tests/test_context_processors.py b/plinth/tests/test_context_processors.py index 146f61ec4..d2782bd0e 100644 --- a/plinth/tests/test_context_processors.py +++ b/plinth/tests/test_context_processors.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Test module for custom context processors. """ @@ -37,7 +36,7 @@ def fixture_menu(): def test_common(): """Verify that the common() function returns the correct values.""" - cfg.read() # initialize config settings + cfg.read() # initialize config settings request = HttpRequest() request.path = '/aaa/bbb/ccc/' diff --git a/plinth/tests/test_custom_shortcuts.py b/plinth/tests/test_custom_shortcuts.py index c0aaae145..5b860d03d 100644 --- a/plinth/tests/test_custom_shortcuts.py +++ b/plinth/tests/test_custom_shortcuts.py @@ -65,8 +65,8 @@ def test_shortcuts_api_with_empty_custom_shortcuts_list(): def test_shortcuts_api_with_custom_nextcloud_shortcut(): shortcuts = get_shortcuts_as_json() assert len(shortcuts['shortcuts']) >= 1 - assert any( - shortcut['name'] == 'NextCloud' for shortcut in shortcuts['shortcuts']) + assert any(shortcut['name'] == 'NextCloud' + for shortcut in shortcuts['shortcuts']) @pytest.mark.usefixtures('nextcloud_shortcut') diff --git a/plinth/tests/test_kvstore.py b/plinth/tests/test_kvstore.py index 4f1792a89..81973b3db 100644 --- a/plinth/tests/test_kvstore.py +++ b/plinth/tests/test_kvstore.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Test module for key/value store. """ @@ -38,8 +37,15 @@ def test_get_set(): def test_get_set_complex_structures(): """Verify that complex structures can be stored and retrieved.""" key = 'compex_structure' - expected_value = {'k1': 1, 'k2': [2, 3], 'k3': 4.5, 'k4': 'Hello', - 'k5': {'a': 'b'}} + expected_value = { + 'k1': 1, + 'k2': [2, 3], + 'k3': 4.5, + 'k4': 'Hello', + 'k5': { + 'a': 'b' + } + } kvstore.set(key, expected_value) actual_value = kvstore.get(key) assert expected_value == actual_value diff --git a/plinth/tests/test_middleware.py b/plinth/tests/test_middleware.py index 31a88275a..bb98a0814 100644 --- a/plinth/tests/test_middleware.py +++ b/plinth/tests/test_middleware.py @@ -42,7 +42,6 @@ def fixture_kwargs(): class TestSetupMiddleware: """Test cases for setup middleware.""" - @staticmethod @pytest.fixture(name='middleware') def fixture_middleware(load_cfg): @@ -135,7 +134,6 @@ class TestSetupMiddleware: class TestAdminMiddleware: """Test cases for admin middleware.""" - @staticmethod @pytest.fixture(name='middleware') def fixture_middleware(load_cfg): diff --git a/plinth/tests/test_network.py b/plinth/tests/test_network.py index ba772eb04..e417f6967 100644 --- a/plinth/tests/test_network.py +++ b/plinth/tests/test_network.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Test module for network configuration utilities. """ diff --git a/plinth/tests/test_templatetags.py b/plinth/tests/test_templatetags.py index 45bfc8396..4326a4422 100644 --- a/plinth/tests/test_templatetags.py +++ b/plinth/tests/test_templatetags.py @@ -51,9 +51,9 @@ def test_highlighting(): 'text': 'create' }] - tests = [['/abc/123/crunch/new/', '/abc/123/crunch/'], [ - '/abc/123/create/', '/abc/123/create/' - ], ['/abc/123/nolink/', '/abc/123/'], ['/abc/123/abx/', '/abc/123/'], + tests = [['/abc/123/crunch/new/', '/abc/123/crunch/'], + ['/abc/123/create/', '/abc/123/create/'], + ['/abc/123/nolink/', '/abc/123/'], ['/abc/123/abx/', '/abc/123/'], ['/abc/123/ab/', '/abc/123/'], ['/abc/123/', '/abc/123/']] for check_path, expected_active_path in tests: diff --git a/plinth/tests/test_utils.py b/plinth/tests/test_utils.py index 611319515..af4373f32 100644 --- a/plinth/tests/test_utils.py +++ b/plinth/tests/test_utils.py @@ -30,7 +30,6 @@ from plinth.utils import YAMLFile, is_user_admin class TestIsAdminUser: """Test class for is_user_admin utility.""" - @staticmethod @pytest.fixture(name='web_request') def fixture_web_request(): @@ -113,9 +112,7 @@ class TestYAMLFileUtil: with open(test_file.name, 'w') as conf_file: conf_file.write( - ruamel.yaml.round_trip_dump({ - 'property1': self.kv_pair - })) + ruamel.yaml.round_trip_dump({'property1': self.kv_pair})) with YAMLFile(test_file.name) as file_conf: file_conf['property2'] = self.kv_pair diff --git a/plinth/urls.py b/plinth/urls.py index 07be6c566..cebaeec82 100644 --- a/plinth/urls.py +++ b/plinth/urls.py @@ -27,8 +27,9 @@ from . import views urlpatterns = [ url(r'^$', views.index, name='index'), - url(r'^language-selection/$', public( - views.LanguageSelectionView.as_view()), name='language-selection'), + url(r'^language-selection/$', + public(views.LanguageSelectionView.as_view()), + name='language-selection'), url(r'^apps/$', views.AppsIndexView.as_view(), name='apps'), url(r'^sys/$', views.system_index, name='system'), diff --git a/plinth/web_framework.py b/plinth/web_framework.py index a3a01d885..45118ce5b 100644 --- a/plinth/web_framework.py +++ b/plinth/web_framework.py @@ -179,7 +179,6 @@ def get_languages(): Add additional languages that FreedomBox support but Django doesn't. """ - def gettext_noop(string): """Django's actual translation methods need Django to be setup.""" return string diff --git a/setup.py b/setup.py index 01cd31791..136197592 100755 --- a/setup.py +++ b/setup.py @@ -118,7 +118,6 @@ class CustomBuild(build): class CustomClean(clean): """Override clean command to clean doc, locales, and egg-info.""" - def run(self): """Execute clean command""" subprocess.check_call(['rm', '-rf', 'Plinth.egg-info/']) @@ -136,7 +135,6 @@ class CustomClean(clean): class CustomInstall(install): """Override install command.""" - def run(self): log.info("Removing disabled apps") for app in DISABLED_APPS_TO_REMOVE: @@ -149,7 +147,6 @@ class CustomInstall(install): class CustomInstallData(install_data): """Override install command to allow directory creation and copy""" - def _run_doc_install(self): """Install documentation""" command = ['make', '-j', '8', '-C', 'doc', 'install'] @@ -315,8 +312,8 @@ setuptools.setup( }, exclude_package_data={'': ['*/data/*']}, data_files=_gather_data_files() + - [('/usr/share/plinth/actions', glob.glob( - os.path.join('actions', '[a-z]*'))), + [('/usr/share/plinth/actions', glob.glob(os.path.join('actions', + '[a-z]*'))), ('/usr/share/man/man1', ['doc/plinth.1'])], cmdclass={ 'install': CustomInstall, diff --git a/vagrant-scripts/plinth-user-permissions.py b/vagrant-scripts/plinth-user-permissions.py index 4fe8991fc..bca08d1c6 100755 --- a/vagrant-scripts/plinth-user-permissions.py +++ b/vagrant-scripts/plinth-user-permissions.py @@ -24,8 +24,8 @@ environment. import augeas sudoers_file = '/etc/sudoers.d/plinth' -aug = augeas.Augeas( - flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) +aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + + augeas.Augeas.NO_MODL_AUTOLOAD) # lens for shell-script config file aug.set('/augeas/load/Shellvars/lens', 'Sudoers.lns') From 45b6aa6a1c4bf0eae0ae894b87f38e277184a4b0 Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Mon, 11 Nov 2019 09:55:44 +0530 Subject: [PATCH 06/42] fix formatting and template-related issues - remove unwanted spaces and line breaks - use just an image instead of using figure and figure caption to display the icon in installation page - eliminate unnecessary code duplication due to if condition Reviewed-by: James Valleroy --- plinth/modules/config/__init__.py | 5 +++ plinth/templates/setup.html | 58 +++++++++++----------------- static/themes/default/css/plinth.css | 19 ++++----- 3 files changed, 35 insertions(+), 47 deletions(-) diff --git a/plinth/modules/config/__init__.py b/plinth/modules/config/__init__.py index 6db06b41f..21c70c1e0 100644 --- a/plinth/modules/config/__init__.py +++ b/plinth/modules/config/__init__.py @@ -36,6 +36,11 @@ is_essential = True name = _('General Configuration') +description = [ + _('Here you can set some general configuration options ', + 'like hostname, domain name, webserver home page etc.') +] + depends = ['firewall', 'names'] manual_page = 'Configure' diff --git a/plinth/templates/setup.html b/plinth/templates/setup.html index 490e91da4..bd5f15226 100644 --- a/plinth/templates/setup.html +++ b/plinth/templates/setup.html @@ -35,45 +35,31 @@ {% endblock %} {% block content %} - - {% if setup_helper.module.icon_filename %} - -
    -
    - -
    {{ setup_helper.module.name }}
    -
    -
    -

    {% trans "Installation" %}: {{ setup_helper.module.short_description|default:'' }} ({{ setup_helper.module.name }})

    - - {% for paragraph in setup_helper.module.description %} -

    {{ paragraph|safe }}

    - {% endfor %} - {% if setup_helper.module.manual_page %} -

    - - {% trans 'Learn more...' %} - -

    - {% endif %} -
    -
    - {% else %} -

    {% trans "Installation" %}: {{ setup_helper.module.short_description|default:'' }} ({{ setup_helper.module.name }})

    +
    - {% for paragraph in setup_helper.module.description %} -

    {{ paragraph|safe }}

    - {% endfor %} + {% if setup_helper.module.icon_filename %} + + {{ setup_helper.module.name  }} - {% if setup_helper.module.manual_page %} -

    - - {% trans 'Learn more...' %} - -

    {% endif %} - {% endif %} + +
    +

    {% trans "Installation" %}: {{ setup_helper.module.short_description|default:'' }} ({{ setup_helper.module.name }})

    + + {% for paragraph in setup_helper.module.description %} +

    {{ paragraph|safe }}

    + {% endfor %} + + {% if setup_helper.module.manual_page %} +

    + + {% trans 'Learn more...' %} + +

    + {% endif %} +
    +
    {% include "toolbar.html" with clients=setup_helper.module.clients %} @@ -175,4 +161,4 @@ {% endif %} {% endif %} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/static/themes/default/css/plinth.css b/static/themes/default/css/plinth.css index 2ea12ad95..3b4cd5e0f 100644 --- a/static/themes/default/css/plinth.css +++ b/static/themes/default/css/plinth.css @@ -545,21 +545,18 @@ a.menu_link_active { margin-bottom: 20px; } -.app-header > figure { +.app-header > img { margin-top: 25px; -} - -.app-header > figure img { width: 100%; } -.app-header > figure figcaption { - text-align: center; - opacity: 0.5; - padding: 10px; - font-size: 12px; -} - .app-description { grid-column: 2; } + +.app-header-single-column { + grid-template-columns: 1fr; +} +.app-header-single-column .app-description { + grid-column: 1; +} \ No newline at end of file From ec6013b5bb41adf83571987ab85e0e2831053d97 Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Thu, 7 Nov 2019 14:37:31 +0530 Subject: [PATCH 07/42] properly implement header in app and setup pages - move header section to it's own file so that it can be imported across the app (app.html, simple_app.html, setup.html) Reviewed-by: James Valleroy --- plinth/modules/config/views.py | 1 + plinth/modules/deluge/urls.py | 2 +- plinth/modules/diagnostics/diagnostics.py | 1 - plinth/modules/firewall/views.py | 2 -- plinth/modules/gitweb/views.py | 1 + plinth/modules/i2p/views.py | 1 + plinth/modules/ikiwiki/views.py | 1 + plinth/modules/jsxc/templates/jsxc.html | 8 ----- plinth/modules/jsxc/views.py | 2 +- plinth/modules/letsencrypt/views.py | 1 - .../templates/matrix-synapse-pre-setup.html | 11 +++--- plinth/modules/matrixsynapse/views.py | 6 +++- plinth/modules/mediawiki/views.py | 1 + plinth/modules/minetest/views.py | 1 + plinth/modules/mldonkey/urls.py | 4 ++- plinth/modules/names/views.py | 1 - plinth/modules/openvpn/views.py | 4 +-- plinth/modules/quassel/views.py | 1 + plinth/modules/radicale/views.py | 1 + plinth/modules/roundcube/urls.py | 3 +- plinth/modules/searx/views.py | 1 + plinth/modules/shadowsocks/views.py | 1 + plinth/modules/sharing/__init__.py | 1 + plinth/modules/sharing/templates/sharing.html | 6 +--- plinth/modules/sharing/views.py | 1 + plinth/modules/syncthing/urls.py | 1 + plinth/modules/tor/__init__.py | 2 ++ plinth/modules/tor/templates/tor.html | 1 - plinth/modules/tor/views.py | 2 +- plinth/modules/transmission/views.py | 1 + plinth/modules/ttrss/urls.py | 1 + plinth/templates/app.html | 30 +--------------- plinth/templates/header.html | 35 +++++++++++++++++++ plinth/templates/setup.html | 25 +------------ plinth/views.py | 8 +++++ 35 files changed, 83 insertions(+), 86 deletions(-) create mode 100644 plinth/templates/header.html diff --git a/plinth/modules/config/views.py b/plinth/modules/config/views.py index 69b4f0463..7318d0f4a 100644 --- a/plinth/modules/config/views.py +++ b/plinth/modules/config/views.py @@ -36,6 +36,7 @@ LOGGER = logging.getLogger(__name__) class ConfigAppView(views.AppView): """Serve configuration page.""" name = config.name + description = config.description form_class = ConfigurationForm app_id = 'config' manual_page = config.manual_page diff --git a/plinth/modules/deluge/urls.py b/plinth/modules/deluge/urls.py index 67cbb9c26..57b86e539 100644 --- a/plinth/modules/deluge/urls.py +++ b/plinth/modules/deluge/urls.py @@ -29,5 +29,5 @@ urlpatterns = [ AppView.as_view(name=deluge.name, description=deluge.description, diagnostics_module_name='deluge', clients=deluge.clients, app_id='deluge', - manual_page=deluge.manual_page), name='index'), + manual_page=deluge.manual_page, icon_filename=deluge.icon_filename), name='index'), ] diff --git a/plinth/modules/diagnostics/diagnostics.py b/plinth/modules/diagnostics/diagnostics.py index 72cf2018f..6bf0e8ec0 100644 --- a/plinth/modules/diagnostics/diagnostics.py +++ b/plinth/modules/diagnostics/diagnostics.py @@ -44,7 +44,6 @@ def index(request): return TemplateResponse( request, 'diagnostics.html', { - 'title': diagnostics.name, 'name': diagnostics.name, 'description': diagnostics.description, 'is_running': _running_task is not None, diff --git a/plinth/modules/firewall/views.py b/plinth/modules/firewall/views.py index abc05ef4c..fa17fd99e 100644 --- a/plinth/modules/firewall/views.py +++ b/plinth/modules/firewall/views.py @@ -30,7 +30,6 @@ def index(request): if not firewall.get_enabled_status(): return TemplateResponse( request, 'firewall.html', { - 'title': firewall.name, 'name': firewall.name, 'description': firewall.description, 'firewall_status': 'not_running' @@ -41,7 +40,6 @@ def index(request): return TemplateResponse( request, 'firewall.html', { - 'title': firewall.name, 'name': firewall.name, 'description': firewall.description, 'components': components.Firewall.list(), diff --git a/plinth/modules/gitweb/views.py b/plinth/modules/gitweb/views.py index 6b26cf5a4..da53efe86 100644 --- a/plinth/modules/gitweb/views.py +++ b/plinth/modules/gitweb/views.py @@ -44,6 +44,7 @@ class GitwebAppView(views.AppView): app_id = 'gitweb' show_status_block = False template_name = 'gitweb_configure.html' + icon_filename = gitweb.icon_filename def get_context_data(self, *args, **kwargs): """Add repositories to the context data.""" diff --git a/plinth/modules/i2p/views.py b/plinth/modules/i2p/views.py index 74dec44d8..e36544db1 100644 --- a/plinth/modules/i2p/views.py +++ b/plinth/modules/i2p/views.py @@ -47,6 +47,7 @@ class I2PAppView(AppView): diagnostics_module_name = i2p.service_name show_status_block = True template_name = 'i2p.html' + icon_filename = i2p.icon_filename def get_context_data(self, **kwargs): """Return the context data for rendering the template view.""" diff --git a/plinth/modules/ikiwiki/views.py b/plinth/modules/ikiwiki/views.py index 4db5a0ae4..2f1f1524e 100644 --- a/plinth/modules/ikiwiki/views.py +++ b/plinth/modules/ikiwiki/views.py @@ -40,6 +40,7 @@ class IkiwikiAppView(views.AppView): template_name = 'ikiwiki_configure.html' manual_page = ikiwiki.manual_page clients = ikiwiki.clients + icon_filename = ikiwiki.icon_filename def get_context_data(self, **kwargs): """Return the context data for rendering the template view.""" diff --git a/plinth/modules/jsxc/templates/jsxc.html b/plinth/modules/jsxc/templates/jsxc.html index 093f03f1e..a3dcf0f41 100644 --- a/plinth/modules/jsxc/templates/jsxc.html +++ b/plinth/modules/jsxc/templates/jsxc.html @@ -20,13 +20,5 @@ {% load i18n %} -{% block description %} - - {% for paragraph in description %} -

    {{ paragraph|safe }}

    - {% endfor %} - -{% endblock %} - {% block configuration %} {% endblock %} diff --git a/plinth/modules/jsxc/views.py b/plinth/modules/jsxc/views.py index 5dc674424..97cb0600c 100644 --- a/plinth/modules/jsxc/views.py +++ b/plinth/modules/jsxc/views.py @@ -34,7 +34,7 @@ class JSXCAppView(AppView): description = jsxc.description show_status_block = False clients = jsxc.clients - + icon_filename = jsxc.icon_filename class JsxcView(TemplateView): """A simple page to embed Javascript XMPP Client library.""" diff --git a/plinth/modules/letsencrypt/views.py b/plinth/modules/letsencrypt/views.py index e235875ea..183c4ed50 100644 --- a/plinth/modules/letsencrypt/views.py +++ b/plinth/modules/letsencrypt/views.py @@ -38,7 +38,6 @@ def index(request): status = letsencrypt.get_status() return TemplateResponse( request, 'letsencrypt.html', { - 'title': letsencrypt.name, 'name': letsencrypt.name, 'description': letsencrypt.description, 'status': status, diff --git a/plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html b/plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html index d61546c88..098b45e8d 100644 --- a/plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html +++ b/plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "app.html" %} {% comment %} # # This file is part of FreedomBox. @@ -21,13 +21,12 @@ {% load bootstrap %} {% load i18n %} -{% block content %} -

    {{ title }}

    +{% block pagetitle %} +

    {{ name }}

    +{% endblock %} - {% for paragraph in description %} -

    {{ paragraph|safe }}

    - {% endfor %} +{% block configuration %}

    {% trans "Configuration" %}

    diff --git a/plinth/modules/matrixsynapse/views.py b/plinth/modules/matrixsynapse/views.py index 3d4822a4b..f7cbcec09 100644 --- a/plinth/modules/matrixsynapse/views.py +++ b/plinth/modules/matrixsynapse/views.py @@ -38,6 +38,8 @@ class SetupView(FormView): template_name = 'matrix-synapse-pre-setup.html' form_class = DomainSelectionForm success_url = reverse_lazy('matrixsynapse:index') + icon_filename = matrixsynapse.icon_filename + title = matrixsynapse.name def form_valid(self, form): """Handle valid form submission.""" @@ -48,8 +50,9 @@ class SetupView(FormView): """Provide context data to the template.""" context = super().get_context_data(**kwargs) - context['title'] = matrixsynapse.name + context['name'] = matrixsynapse.name context['description'] = matrixsynapse.description + context['icon_filename'] = matrixsynapse.icon_filename context['domain_names'] = names.components.DomainName.list_names( 'matrix-synapse-plinth') @@ -65,6 +68,7 @@ class MatrixSynapseAppView(AppView): diagnostics_module_name = 'matrixsynapse' form_class = MatrixSynapseForm port_forwarding_info = matrixsynapse.port_forwarding_info + icon_filename = matrixsynapse.icon_filename def dispatch(self, request, *args, **kwargs): """Redirect to setup page if setup is not done yet.""" diff --git a/plinth/modules/mediawiki/views.py b/plinth/modules/mediawiki/views.py index 07f7615e0..dddd6eb51 100644 --- a/plinth/modules/mediawiki/views.py +++ b/plinth/modules/mediawiki/views.py @@ -43,6 +43,7 @@ class MediaWikiAppView(views.AppView): manual_page = mediawiki.manual_page show_status_block = False template_name = 'mediawiki.html' + icon_filename = mediawiki.icon_filename def get_initial(self): """Return the values to fill in the form.""" diff --git a/plinth/modules/minetest/views.py b/plinth/modules/minetest/views.py index 12ba4f61f..efc0cd85d 100644 --- a/plinth/modules/minetest/views.py +++ b/plinth/modules/minetest/views.py @@ -41,6 +41,7 @@ class MinetestAppView(AppView): # pylint: disable=too-many-ancestors clients = minetest.clients manual_page = minetest.manual_page port_forwarding_info = minetest.port_forwarding_info + icon_filename = minetest.icon_filename def get_initial(self): """Return the values to fill in the form.""" diff --git a/plinth/modules/mldonkey/urls.py b/plinth/modules/mldonkey/urls.py index 8c9c9a28c..9b15c7bb8 100644 --- a/plinth/modules/mldonkey/urls.py +++ b/plinth/modules/mldonkey/urls.py @@ -31,5 +31,7 @@ urlpatterns = [ description=mldonkey.description, clients=mldonkey.clients, manual_page=mldonkey.manual_page, - show_status_block=True), name='index'), + show_status_block=True, + icon_filename=mldonkey.icon_filename), + name='index'), ] diff --git a/plinth/modules/names/views.py b/plinth/modules/names/views.py index 64bcd211c..2781436ed 100644 --- a/plinth/modules/names/views.py +++ b/plinth/modules/names/views.py @@ -31,7 +31,6 @@ def index(request): return TemplateResponse( request, 'names.html', { - 'title': names.name, 'name': names.name, 'description': names.description, 'manual_page': names.manual_page, diff --git a/plinth/modules/openvpn/views.py b/plinth/modules/openvpn/views.py index 42e0f25a4..7b5b989b4 100644 --- a/plinth/modules/openvpn/views.py +++ b/plinth/modules/openvpn/views.py @@ -58,9 +58,8 @@ def index(request): return TemplateResponse( request, 'openvpn.html', { - 'title': openvpn.name, - 'name': openvpn.name, 'clients': openvpn.clients, + 'name': openvpn.name, 'description': openvpn.description, 'manual_page': openvpn.manual_page, 'port_forwarding_info': openvpn.port_forwarding_info, @@ -70,6 +69,7 @@ def index(request): 'is_running': status['is_running'], 'diagnostics_module_name': 'openvpn', 'is_enabled': status['enabled'], + 'icon_filename': openvpn.icon_filename }) diff --git a/plinth/modules/quassel/views.py b/plinth/modules/quassel/views.py index 62e018079..211b7f9fd 100644 --- a/plinth/modules/quassel/views.py +++ b/plinth/modules/quassel/views.py @@ -30,6 +30,7 @@ class QuasselAppView(AppView): manual_page = quassel.manual_page port_forwarding_info = quassel.port_forwarding_info form_class = QuasselForm + icon_filename = quassel.icon_filename def get_initial(self): """Return the values to fill in the form.""" diff --git a/plinth/modules/radicale/views.py b/plinth/modules/radicale/views.py index 70f174c84..6e3c25e60 100644 --- a/plinth/modules/radicale/views.py +++ b/plinth/modules/radicale/views.py @@ -38,6 +38,7 @@ class RadicaleAppView(AppView): form_class = RadicaleForm app_id = 'radicale' manual_page = radicale.manual_page + icon_filename = radicale.icon_filename def get_initial(self): """Return the values to fill in the form.""" diff --git a/plinth/modules/roundcube/urls.py b/plinth/modules/roundcube/urls.py index f1ba3a856..030d858a4 100644 --- a/plinth/modules/roundcube/urls.py +++ b/plinth/modules/roundcube/urls.py @@ -30,5 +30,6 @@ urlpatterns = [ diagnostics_module_name='roundcube', description=roundcube.description, show_status_block=False, clients=roundcube.clients, - manual_page=roundcube.manual_page), name='index'), + manual_page=roundcube.manual_page, + icon_filename=roundcube.icon_filename), name='index'), ] diff --git a/plinth/modules/searx/views.py b/plinth/modules/searx/views.py index d4b5b48f3..f90f2b2fc 100644 --- a/plinth/modules/searx/views.py +++ b/plinth/modules/searx/views.py @@ -38,6 +38,7 @@ class SearxAppView(views.AppView): form_class = SearxForm show_status_block = False manual_page = searx.manual_page + icon_filename = searx.icon_filename def get_initial(self): """Return the status of the service to fill in the form.""" diff --git a/plinth/modules/shadowsocks/views.py b/plinth/modules/shadowsocks/views.py index d9e13928d..19c4633c7 100644 --- a/plinth/modules/shadowsocks/views.py +++ b/plinth/modules/shadowsocks/views.py @@ -38,6 +38,7 @@ class ShadowsocksAppView(views.AppView): name = shadowsocks.name description = shadowsocks.description manual_page = shadowsocks.manual_page + icon_filename = shadowsocks.icon_filename def get_initial(self, *args, **kwargs): """Get initial values for form.""" diff --git a/plinth/modules/sharing/__init__.py b/plinth/modules/sharing/__init__.py index 06e96ede5..f3a2b3abe 100644 --- a/plinth/modules/sharing/__init__.py +++ b/plinth/modules/sharing/__init__.py @@ -42,6 +42,7 @@ description = [ app = None +icon_filename = 'sharing' class SharingApp(app_module.App): """FreedomBox app for sharing files.""" diff --git a/plinth/modules/sharing/templates/sharing.html b/plinth/modules/sharing/templates/sharing.html index e37ecb861..1e22a3372 100644 --- a/plinth/modules/sharing/templates/sharing.html +++ b/plinth/modules/sharing/templates/sharing.html @@ -33,11 +33,7 @@ {% block content %} -

    {{ title }}

    - - {% for paragraph in description %} -

    {{ paragraph|safe }}

    - {% endfor %} + {% include "header.html" with icon_filename=icon_filename name=title description='' %}

    -

    - {% block pagetitle %} -

    {{ name }}

    - {% endblock %} - -
    - {% if is_enabled %} - - {% else %} - - {% endif %} -
    -
    - - {% block description %} - {% for paragraph in description %} -

    {{ paragraph|safe }}

    - {% endfor %} - {% endblock %} -
- - {% if manual_page %} -

- - {% trans 'Learn more...' %} - -

- {% endif %} + {% include "header.html" with icon_filename=icon_filename name=name description=description manual_page=manual_page %} {% include "toolbar.html" with enabled=is_enabled %} diff --git a/plinth/templates/header.html b/plinth/templates/header.html new file mode 100644 index 000000000..6ae15c022 --- /dev/null +++ b/plinth/templates/header.html @@ -0,0 +1,35 @@ +{% load bootstrap %} +{% load i18n %} +{% load static %} + +
+ {% if icon_filename %} + + {{ name  }} + + {% endif %} + +
+ {% block pagetitle %} + {% if setup %} +

{% trans "Installation" %}: {{ short_description|default:'' }} ({{ name }})

+ {% else %} +

{{ name }}

+ {% endif %} + {% endblock %} + + {% block description %} + {% for paragraph in description %} +

{{ paragraph|safe }}

+ {% endfor %} + {% endblock %} + + {% if manual_page %} +

+ + {% trans 'Learn more...' %} + +

+ {% endif %} +
+
diff --git a/plinth/templates/setup.html b/plinth/templates/setup.html index bd5f15226..6011695ad 100644 --- a/plinth/templates/setup.html +++ b/plinth/templates/setup.html @@ -36,30 +36,7 @@ {% block content %} -
- - {% if setup_helper.module.icon_filename %} - - {{ setup_helper.module.name  }} - - {% endif %} - -
-

{% trans "Installation" %}: {{ setup_helper.module.short_description|default:'' }} ({{ setup_helper.module.name }})

- - {% for paragraph in setup_helper.module.description %} -

{{ paragraph|safe }}

- {% endfor %} - - {% if setup_helper.module.manual_page %} -

- - {% trans 'Learn more...' %} - -

- {% endif %} -
-
+ {% include "header.html" with icon_filename=setup_helper.module.icon_filename name=setup_helper.module.name description=setup_helper.module.description manual_page=setup_helper.module.manual_page setup=True %} {% include "toolbar.html" with clients=setup_helper.module.clients %} diff --git a/plinth/views.py b/plinth/views.py index 57d811603..cee5d0901 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -126,6 +126,7 @@ class AppView(FormView): template_name = 'app.html' manual_page = '' port_forwarding_info = None + icon_filename = '' def __init__(self, *args, **kwargs): """Initialize the view.""" @@ -197,6 +198,7 @@ class AppView(FormView): context['show_status_block'] = self.show_status_block context['manual_page'] = self.manual_page context['port_forwarding_info'] = self.port_forwarding_info + context['icon_filename'] = self.icon_filename from plinth.modules.firewall.components import Firewall context['firewall'] = self.app.get_components_of_type(Firewall) @@ -207,6 +209,9 @@ class AppView(FormView): class SetupView(TemplateView): """View to prompt and setup applications.""" template_name = 'setup.html' + name = 'None' + # List of paragraphs describing the service + description = "" def get_context_data(self, **kwargs): """Return the context data rendering the template.""" @@ -223,6 +228,9 @@ class SetupView(TemplateView): context[ 'package_manager_is_busy'] = package.is_package_manager_busy() + context['name'] = self.name + context['description'] = self.description + return context def dispatch(self, request, *args, **kwargs): From 0dd4d1acf23e25375c0ad9f56827d9149f18e358 Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Fri, 8 Nov 2019 15:33:07 +0530 Subject: [PATCH 08/42] implement responsive layout for app page Reviewed-by: James Valleroy --- plinth/modules/deluge/urls.py | 3 ++- plinth/modules/infinoted/__init__.py | 1 + plinth/modules/jsxc/views.py | 1 + plinth/modules/mldonkey/urls.py | 3 +-- plinth/modules/mumble/__init__.py | 1 + plinth/modules/privoxy/__init__.py | 1 + plinth/modules/sharing/__init__.py | 1 + plinth/modules/syncthing/urls.py | 2 +- static/themes/default/css/plinth.css | 20 ++++++++++++++++++++ 9 files changed, 29 insertions(+), 4 deletions(-) diff --git a/plinth/modules/deluge/urls.py b/plinth/modules/deluge/urls.py index 57b86e539..80ba1e6ce 100644 --- a/plinth/modules/deluge/urls.py +++ b/plinth/modules/deluge/urls.py @@ -29,5 +29,6 @@ urlpatterns = [ AppView.as_view(name=deluge.name, description=deluge.description, diagnostics_module_name='deluge', clients=deluge.clients, app_id='deluge', - manual_page=deluge.manual_page, icon_filename=deluge.icon_filename), name='index'), + manual_page=deluge.manual_page, + icon_filename=deluge.icon_filename), name='index'), ] diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index 2493540a5..3fd97f921 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -108,6 +108,7 @@ class InfinotedAppView(AppView): port_forwarding_info = port_forwarding_info icon_filename = icon_filename + def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/jsxc/views.py b/plinth/modules/jsxc/views.py index 97cb0600c..ca3b804f2 100644 --- a/plinth/modules/jsxc/views.py +++ b/plinth/modules/jsxc/views.py @@ -36,6 +36,7 @@ class JSXCAppView(AppView): clients = jsxc.clients icon_filename = jsxc.icon_filename + class JsxcView(TemplateView): """A simple page to embed Javascript XMPP Client library.""" template_name = 'jsxc_launch.html' diff --git a/plinth/modules/mldonkey/urls.py b/plinth/modules/mldonkey/urls.py index 9b15c7bb8..57f1e0500 100644 --- a/plinth/modules/mldonkey/urls.py +++ b/plinth/modules/mldonkey/urls.py @@ -32,6 +32,5 @@ urlpatterns = [ clients=mldonkey.clients, manual_page=mldonkey.manual_page, show_status_block=True, - icon_filename=mldonkey.icon_filename), - name='index'), + icon_filename=mldonkey.icon_filename), name='index'), ] diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 0bfa39469..384c07236 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -110,6 +110,7 @@ class MumbleAppView(AppView): port_forwarding_info = port_forwarding_info icon_filename = icon_filename + def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index 83ad90c3c..08c827bad 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -119,6 +119,7 @@ class PrivoxyAppView(AppView): manual_page = manual_page icon_filename = icon_filename + def diagnose(): """Run diagnostics and return the results.""" results = [] diff --git a/plinth/modules/sharing/__init__.py b/plinth/modules/sharing/__init__.py index f3a2b3abe..25a905cfb 100644 --- a/plinth/modules/sharing/__init__.py +++ b/plinth/modules/sharing/__init__.py @@ -44,6 +44,7 @@ app = None icon_filename = 'sharing' + class SharingApp(app_module.App): """FreedomBox app for sharing files.""" diff --git a/plinth/modules/syncthing/urls.py b/plinth/modules/syncthing/urls.py index 1fd002ea8..cc275b9e9 100644 --- a/plinth/modules/syncthing/urls.py +++ b/plinth/modules/syncthing/urls.py @@ -31,6 +31,6 @@ urlpatterns = [ description=syncthing.description, clients=syncthing.clients, manual_page=syncthing.manual_page, - icon_filename = syncthing.icon_filename, + icon_filename=syncthing.icon_filename, show_status_block=True), name='index'), ] diff --git a/static/themes/default/css/plinth.css b/static/themes/default/css/plinth.css index 3b4cd5e0f..3813af8cd 100644 --- a/static/themes/default/css/plinth.css +++ b/static/themes/default/css/plinth.css @@ -559,4 +559,24 @@ a.menu_link_active { } .app-header-single-column .app-description { grid-column: 1; +} + +@media screen and (max-width: 768px) { + .app-header { + display: flex; + flex-flow: column; + margin-bottom: 20px; + text-align: center; + } + + .app-header img { + width: 150px; + height: 150px; + margin: 0 auto; + border-radius: 20%; + border: 5px solid #fff; + box-shadow: 0px 4px 5px 1px rgba(0, 0, 0, 0.1); + padding: 10px; + transition: height 0.5s width 0.5s; + } } \ No newline at end of file From 9cd203411dc4cc3cfbb838acd9c4faa7ab306cb2 Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Tue, 26 Nov 2019 12:12:28 +0530 Subject: [PATCH 09/42] fix toggle buttle html layout and responsive design css Reviewed-by: James Valleroy --- plinth/templates/header.html | 24 +++++++++++++++------- static/themes/default/css/plinth.css | 30 ++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/plinth/templates/header.html b/plinth/templates/header.html index 6ae15c022..ecb68be28 100644 --- a/plinth/templates/header.html +++ b/plinth/templates/header.html @@ -3,6 +3,7 @@ {% load static %}
+ {% if icon_filename %} {{ name  }} @@ -10,13 +11,22 @@ {% endif %}
- {% block pagetitle %} - {% if setup %} -

{% trans "Installation" %}: {{ short_description|default:'' }} ({{ name }})

- {% else %} -

{{ name }}

- {% endif %} - {% endblock %} +
+ {% block pagetitle %} + {% if setup %} +

{% trans "Installation" %}: {{ short_description|default:'' }} ({{ name }})

+ {% else %} +

{{ name }}

+ {% endif %} + {% endblock %} +
+ {% if is_enabled %} + + {% else %} + + {% endif %} +
+
{% block description %} {% for paragraph in description %} diff --git a/static/themes/default/css/plinth.css b/static/themes/default/css/plinth.css index 3813af8cd..ee2ed7702 100644 --- a/static/themes/default/css/plinth.css +++ b/static/themes/default/css/plinth.css @@ -579,4 +579,34 @@ a.menu_link_active { padding: 10px; transition: height 0.5s width 0.5s; } + + .header-bar { + display: flex; + flex-flow: column-reverse; + justify-content: center; + height: auto; + } + + .header-bar h2 { + margin: 0 0 15px 0; + } + + .header-bar .app-toggle-container { + display: flex; + flex-flow: row; + justify-content: center; + margin: 30px 0; + } + + .header-bar .toggle-button { + transform: scale(1.2); + } + + .content-container { + margin: 0 10vw; + } + + .card-list { + margin: 20px 10vw; + } } \ No newline at end of file From a9979db56fc7c7737c7abab91bb40b306df5a9a6 Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Tue, 3 Dec 2019 15:33:04 +0530 Subject: [PATCH 10/42] config: fix minor syntax error Reviewed-by: James Valleroy --- plinth/modules/config/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plinth/modules/config/__init__.py b/plinth/modules/config/__init__.py index 21c70c1e0..a633689d4 100644 --- a/plinth/modules/config/__init__.py +++ b/plinth/modules/config/__init__.py @@ -37,7 +37,7 @@ is_essential = True name = _('General Configuration') description = [ - _('Here you can set some general configuration options ', + _('Here you can set some general configuration options ' 'like hostname, domain name, webserver home page etc.') ] From 52a9673f697493d520738f28296c66035b36fb4b Mon Sep 17 00:00:00 2001 From: Alice Kile Date: Tue, 3 Dec 2019 15:42:02 +0530 Subject: [PATCH 11/42] fix: implement requested changes - pass short_description to header.html include statement in templates/setup.html - pass description to header.html include statement in modules/sharing/templates/sharing.html - use `[]` instead of `None` for the initial value of description property in SetupView (plinth/views.py) - add license info to header.html Reviewed-by: James Valleroy --- plinth/modules/sharing/templates/sharing.html | 2 +- plinth/templates/header.html | 19 +++++++++++++++++++ plinth/templates/setup.html | 2 +- plinth/views.py | 2 +- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/plinth/modules/sharing/templates/sharing.html b/plinth/modules/sharing/templates/sharing.html index 1e22a3372..746329c13 100644 --- a/plinth/modules/sharing/templates/sharing.html +++ b/plinth/modules/sharing/templates/sharing.html @@ -33,7 +33,7 @@ {% block content %} - {% include "header.html" with icon_filename=icon_filename name=title description='' %} + {% include "header.html" with icon_filename=icon_filename name=title description=description %}

. +# +{% endcomment %} + {% load bootstrap %} {% load i18n %} {% load static %} diff --git a/plinth/templates/setup.html b/plinth/templates/setup.html index 6011695ad..9de74ce09 100644 --- a/plinth/templates/setup.html +++ b/plinth/templates/setup.html @@ -36,7 +36,7 @@ {% block content %} - {% include "header.html" with icon_filename=setup_helper.module.icon_filename name=setup_helper.module.name description=setup_helper.module.description manual_page=setup_helper.module.manual_page setup=True %} + {% include "header.html" with icon_filename=setup_helper.module.icon_filename name=setup_helper.module.name description=setup_helper.module.description short_description=setup_helper.module.short_description manual_page=setup_helper.module.manual_page setup=True %} {% include "toolbar.html" with clients=setup_helper.module.clients %} diff --git a/plinth/views.py b/plinth/views.py index cee5d0901..4cb7be766 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -211,7 +211,7 @@ class SetupView(TemplateView): template_name = 'setup.html' name = 'None' # List of paragraphs describing the service - description = "" + description = [] def get_context_data(self, **kwargs): """Return the context data rendering the template.""" From dac6259928cc4118c0b127f3530ddc2c4b480b43 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 7 Dec 2019 13:33:49 -0500 Subject: [PATCH 12/42] themes: css whitespace minor fixes Signed-off-by: James Valleroy --- static/themes/default/css/plinth.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/themes/default/css/plinth.css b/static/themes/default/css/plinth.css index ee2ed7702..ff4d19969 100644 --- a/static/themes/default/css/plinth.css +++ b/static/themes/default/css/plinth.css @@ -595,7 +595,7 @@ a.menu_link_active { display: flex; flex-flow: row; justify-content: center; - margin: 30px 0; + margin: 30px 0; } .header-bar .toggle-button { @@ -609,4 +609,4 @@ a.menu_link_active { .card-list { margin: 20px 10vw; } -} \ No newline at end of file +} From 1df21bc09031830a8116c89ad9729089f01f9d75 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 7 Dec 2019 13:51:03 -0500 Subject: [PATCH 13/42] samba: Add icon to app page Signed-off-by: James Valleroy --- plinth/modules/samba/__init__.py | 4 +++- plinth/modules/samba/views.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index 5c1636855..697c21e2b 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -42,6 +42,8 @@ managed_packages = ['samba', 'acl'] name = _('Samba') +icon_filename = 'samba' + short_description = _('File Sharing') description = [ @@ -75,7 +77,7 @@ class SambaApp(app_module.App): shortcut = frontpage.Shortcut( 'shortcut-samba', name, short_description=short_description, - icon='samba', description=description, + icon=icon_filename, description=description, configure_url=reverse_lazy('samba:index'), clients=clients, login_required=True, allowed_groups=[group[0]]) self.add(shortcut) diff --git a/plinth/modules/samba/views.py b/plinth/modules/samba/views.py index a9cc3c6e0..a8f5c9185 100644 --- a/plinth/modules/samba/views.py +++ b/plinth/modules/samba/views.py @@ -39,6 +39,7 @@ class SambaAppView(views.AppView): diagnostics_module_name = 'samba' app_id = 'samba' template_name = 'samba.html' + icon_filename = samba.icon_filename def get_context_data(self, *args, **kwargs): """Return template context data.""" From e1f9dfacaa7dbdcc9e08d455f667c5a360bb1d5f Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Sun, 1 Dec 2019 23:01:51 +0300 Subject: [PATCH 14/42] samba: recursively set open share directory permissions Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- actions/samba | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/actions/samba b/actions/samba index 9bd6522e7..88fcbdcc7 100755 --- a/actions/samba +++ b/actions/samba @@ -114,10 +114,7 @@ def _create_share(mount_point, windows_filesystem=False): # FAT and NTFS partitions don't support setting permissions if not windows_filesystem: - shutil.chown(open_share_path, group='freedombox-share') - os.chmod(open_share_path, 0o2775) - subprocess.check_call(['setfacl', '-Rm', 'g::rwx', open_share_path]) - subprocess.check_call(['setfacl', '-Rdm', 'g::rwx', open_share_path]) + _set_open_share_permissions(open_share_path) share_name = _create_share_name(mount_point) _define_open_share(share_name, open_share_path, windows_filesystem) @@ -193,6 +190,23 @@ def _make_mounts_readable_by_others(mount_point): os.chmod(dirname, stats.st_mode | stat.S_IROTH | stat.S_IXOTH) +def _set_open_share_permissions(directory): + """Set file and directory permissions for open share.""" + shutil.chown(directory, group='freedombox-share') + os.chmod(directory, 0o2775) + for root, dirs, files in os.walk(directory): + for subdir in dirs: + subdir_path = os.path.join(root, subdir) + shutil.chown(subdir_path, group='freedombox-share') + os.chmod(subdir_path, 0o2775) + for file in files: + file_path = os.path.join(root, file) + shutil.chown(file_path, group='freedombox-share') + os.chmod(file_path, 0o0664) + subprocess.check_call(['setfacl', '-Rm', 'g::rwX', directory]) + subprocess.check_call(['setfacl', '-Rdm', 'g::rwX', directory]) + + def _use_config_file(conf_file): """Set samba configuration file location.""" aug = augeas.Augeas( From ef5f5a21de5649885ca7caf5f579a261b75bbc0b Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 12 Nov 2019 23:52:21 +0000 Subject: [PATCH 15/42] feature: minidlna app Closes #1679 Reviewed-by: James Valleroy --- actions/minidlna | 106 ++++++++++++++ plinth/modules/minidlna/__init__.py | 116 +++++++++++++++ .../conf-available/minidlna-freedombox.conf | 3 + .../data/etc/plinth/modules-enabled/minidlna | 1 + plinth/modules/minidlna/forms.py | 39 +++++ plinth/modules/minidlna/manifest.py | 138 ++++++++++++++++++ plinth/modules/minidlna/tests/__init__.py | 0 plinth/modules/minidlna/urls.py | 27 ++++ plinth/modules/minidlna/views.py | 65 +++++++++ static/themes/default/icons/minidlna.svg | Bin 0 -> 49175 bytes 10 files changed, 495 insertions(+) create mode 100755 actions/minidlna create mode 100644 plinth/modules/minidlna/__init__.py create mode 100644 plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf create mode 100644 plinth/modules/minidlna/data/etc/plinth/modules-enabled/minidlna create mode 100644 plinth/modules/minidlna/forms.py create mode 100644 plinth/modules/minidlna/manifest.py create mode 100644 plinth/modules/minidlna/tests/__init__.py create mode 100644 plinth/modules/minidlna/urls.py create mode 100644 plinth/modules/minidlna/views.py create mode 100644 static/themes/default/icons/minidlna.svg diff --git a/actions/minidlna b/actions/minidlna new file mode 100755 index 000000000..544fa4c7f --- /dev/null +++ b/actions/minidlna @@ -0,0 +1,106 @@ +#!/usr/bin/python3 +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Configuration actions for the minidlna server. +""" +import argparse +from tempfile import mkstemp +from shutil import move +from os import fdopen, remove + +import augeas + +from plinth.utils import grep + +config_path = '/etc/minidlna.conf' + + +def parse_arguments(): + """Return parsed command line arguments as dictionary.""" + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + + subparsers.add_parser('setup', help='Setup SSH server') + + subparsers.add_parser('get-media-dir', help='Get media directory') + + set_media_dir = subparsers.add_parser('set-media-dir', + help='Set custom media directory') + set_media_dir.add_argument('--dir') + + subparsers.required = True + return parser.parse_args() + + +def subcommand_setup(arguments): + """ + Increase inotify watches per folder to allow minidlna to + monitor changes in large media-dirs. + """ + aug = augeas.Augeas( + flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug.set('/augeas/load/Sysctl/lens', 'Sysctl.lns') + aug.set('/augeas/load/Sysctl/incl[last() + 1]', '/etc/sysctl.conf') + aug.load() + + aug.set('/files/etc/sysctl.conf/fs.inotify.max_user_watches', '100000') + aug.save() + + +def subcommand_get_media_dir(arguments): + """Retrieve media directory from minidlna.conf""" + line = grep('^media_dir=', config_path) + + print(line[0].split("=")[1]) + + +def subcommand_set_media_dir(arguments): + """Set media directory in minidlna.conf""" + line = grep('^media_dir=', config_path)[0] + + new_line = 'media_dir=%s\n' % arguments.dir + replace_in_config_file(config_path, line, new_line) + + +def replace_in_config_file(file_path, pattern, subst): + """ + Create a temporary minidlna.conf file, + replace the media dir config, + remove original one and move the temporary file. + """ + temp_file, temp_file_path = mkstemp() + with fdopen(temp_file, 'w') as new_file: + with open(file_path) as old_file: + for line in old_file: + new_file.write(line.replace(pattern, subst)) + + remove(file_path) + move(temp_file_path, file_path) + + +def main(): + """Parse arguments and perform all duties.""" + arguments = parse_arguments() + + subcommand = arguments.subcommand.replace('-', '_') + subcommand_method = globals()['subcommand_' + subcommand] + subcommand_method(arguments) + + +if __name__ == '__main__': + main() diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py new file mode 100644 index 000000000..48ea0bd29 --- /dev/null +++ b/plinth/modules/minidlna/__init__.py @@ -0,0 +1,116 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +FreedomBox app to configure minidlna. +""" +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +import plinth.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.modules.users import register_group +from plinth.action_utils import diagnose_url + +from .manifest import backup, clients # noqa + +version = 1 + +name = 'minidlna' + +icon_name = name + +managed_packages = ['minidlna'] + +short_description = _('Simple Media Server') + +description = [ + _('MiniDLNA is a simple media server software, with the aim of being ' + 'fully compliant with DLNA/UPnP-AV clients. ' + 'The MiniDNLA daemon serves media files ' + '(music, pictures, and video) to clients on a network. ' + 'DNLA/UPnP is zero configuration protocol and is compliant ' + 'with any device passing the DLNA Certification like portable ' + 'media players, Smartphones, Televisions, and gaming systems (' + 'such as PS3 and Xbox 360) or applications such as totem and Kodi.') +] + +clients = clients + +group = ('minidlna', _('Media streaming server')) + +app = None + + +class MiniDLNAApp(app_module.App): + """Freedombox app managing miniDlna""" + app_id = 'minidlna' + + def __init__(self): + """Initialize the app components""" + super().__init__() + menu_item = menu.Menu( + 'menu-minidlna', + name=name, + short_description=short_description, + url_name='minidlna:index', + parent_url_name='apps', + icon=icon_name, + ) + firewall = Firewall('firewall-minidlna', name, ports=['minidlna'], + is_external=False) + webserver = Webserver('webserver-minidlna', 'minidlna-plinth') + shortcut = frontpage.Shortcut( + 'shortcut-minidlna', + name, + short_description=short_description, + description=description, + icon=icon_name, + url='/_minidlna/', + login_required=True, + ) + + self.add(menu_item) + self.add(webserver) + self.add(firewall) + self.add(shortcut) + + +def init(): + global app + app = MiniDLNAApp() + register_group(group) + + setup_helper = globals()['setup_helper'] + if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): + app.set_enabled(True) + + +def setup(helper, old_version=None): + """Install and configure the package""" + helper.install(managed_packages) + helper.call('post', actions.superuser_run, 'minidlna', ['setup']) + helper.call('post', app.enable) + + +def diagnose(): + """Check if the http page listening on 8200 is accessible""" + results = [] + results.append(diagnose_url('http://localhost:8200/')) + + return results diff --git a/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf b/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf new file mode 100644 index 000000000..544e0d862 --- /dev/null +++ b/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf @@ -0,0 +1,3 @@ + + ProxyPass http://localhost:8200/ + diff --git a/plinth/modules/minidlna/data/etc/plinth/modules-enabled/minidlna b/plinth/modules/minidlna/data/etc/plinth/modules-enabled/minidlna new file mode 100644 index 000000000..164cbbd65 --- /dev/null +++ b/plinth/modules/minidlna/data/etc/plinth/modules-enabled/minidlna @@ -0,0 +1 @@ +plinth.modules.minidlna diff --git a/plinth/modules/minidlna/forms.py b/plinth/modules/minidlna/forms.py new file mode 100644 index 000000000..a272a8264 --- /dev/null +++ b/plinth/modules/minidlna/forms.py @@ -0,0 +1,39 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +FreedomBox configuration form for MiniDLNA server. +""" + +from django import forms +from django.utils.translation import ugettext_lazy as _ + +from plinth.forms import AppForm + + +class MiniDLNAServerForm(AppForm): + """MiniDLNA server configuration form.""" + media_dir = forms.CharField( + label=_('Media Files Directory'), + help_text=_('Directory that MiniDLNA Server will read for content. All' + ' sub-directories of this will be also scanned for media ' + 'files. ' + 'If you change the default ensure that the new directory ' + 'exists and that is readable from the "minidlna" user. ' + 'Any user media directories ("/home/username/") will ' + 'usually work.'), + required=False, + ) diff --git a/plinth/modules/minidlna/manifest.py b/plinth/modules/minidlna/manifest.py new file mode 100644 index 000000000..24a0643ab --- /dev/null +++ b/plinth/modules/minidlna/manifest.py @@ -0,0 +1,138 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +from plinth.modules.backups.api import validate as validate_backup +from plinth.clients import validate, store_url + +clients = validate([ + { + 'name': _('vlc'), + 'platforms': [ + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'deb', + 'name': 'vlc', + }, + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'rpm', + 'name': 'vlc', + }, + { + 'type': 'download', + 'os': 'windows', + 'url': 'https://www.videolan.org/vlc/download-windows.html', + }, + { + 'type': 'download', + 'os': 'macos', + 'url': 'https://www.videolan.org/vlc/download-macosx.html', + }, + { + 'type': 'store', + 'os': 'android', + 'store_name': 'google-play', + 'url': store_url('google-play', 'org.videolan.vlc') + }, + { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', 'org.videolan.vlc') + }, + ] + }, + { + 'name': _('kodi'), + 'platforms': [ + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'deb', + 'name': 'kodi', + }, + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'rpm', + 'name': 'kodi', + }, + { + 'type': 'download', + 'os': 'windows', + 'url': 'http://kodi.tv/download/', + }, + { + 'type': 'download', + 'os': 'macos', + 'url': 'http://kodi.tv/download/', + }, + { + 'type': 'store', + 'os': 'android', + 'store_name': 'google-play', + 'url': store_url('google-play', 'org.xbmc.kodi') + }, + { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', 'org.xbmc.kodi') + }, + ] + }, + { + 'name': _('yaacc'), + 'platforms': [ + { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', 'de.yaacc') + }, + ] + }, + { + 'name': _('totem'), + 'platforms': [ + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'deb', + 'name': 'totem', + }, + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'rpm', + 'name': 'totem', + }, + ] + }, +]) + +# TODO: get all media directories from config file +# for now hard code default media folder. +backup = validate_backup({ + 'data': { + 'directories': ['/var/lib/minidlna'] + } +}) diff --git a/plinth/modules/minidlna/tests/__init__.py b/plinth/modules/minidlna/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/plinth/modules/minidlna/urls.py b/plinth/modules/minidlna/urls.py new file mode 100644 index 000000000..6dd7527f2 --- /dev/null +++ b/plinth/modules/minidlna/urls.py @@ -0,0 +1,27 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +URLs for the minidlna Server module. +""" + +from django.conf.urls import url + +from plinth.modules.minidlna.views import MiniDLNAAppView + +urlpatterns = [ + url(r'^apps/minidlna/$', MiniDLNAAppView.as_view(), name='index'), +] diff --git a/plinth/modules/minidlna/views.py b/plinth/modules/minidlna/views.py new file mode 100644 index 000000000..ee3926f2c --- /dev/null +++ b/plinth/modules/minidlna/views.py @@ -0,0 +1,65 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Views for the minidlna module +""" +import os + +from django.contrib import messages +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +from plinth.views import AppView +from plinth.modules import minidlna + +from .forms import MiniDLNAServerForm + + +class MiniDLNAAppView(AppView): + app_id = 'minidlna' + name = minidlna.name + description = minidlna.description + form_class = MiniDLNAServerForm + diagnostics_module_name = 'minidlna' + + def get_initial(self): + """Initial form value as found in the minidlna.conf""" + initial = super().get_initial() + initial.update({ + 'media_dir': actions.superuser_run('minidlna', ['get-media-dir']), + }) + + return initial + + def form_valid(self, form): + """Apply changes from the form""" + old_config = form.initial + new_config = form.cleaned_data + + if old_config['media_dir'].strip() != new_config['media_dir']: + if os.path.isdir(new_config['media_dir']) is False: + messages.error(self.request, + _('Specified directory does not exist.')) + else: + actions.superuser_run( + 'minidlna', + ['set-media-dir', '--dir', new_config['media_dir']] + ) + actions.superuser_run('service', ['restart', 'minidlna']) + messages.success(self.request, _('Updated media directory')) + + return super().form_valid(form) diff --git a/static/themes/default/icons/minidlna.svg b/static/themes/default/icons/minidlna.svg new file mode 100644 index 0000000000000000000000000000000000000000..7ae6aaed4109190142d06a5d63d838a555dd8a72 GIT binary patch literal 49175 zcmV)3K+C_0P)NPK#}kVMbSIY7uA+uejo>mqM|6JYum|His;Fc(47_ce!30pfqvos z3|Hjl4aK6UbVK?3OZ&@%e?D2<#s zdBS((ocm7GB|ZK?(d0W>_UIGP^GI}o;lua$kYQuzaLW?++S+>b#1oNQZ$(vGeEY)M z%vIRRuhHnagLw%@GKc5xK3u-L^l^Rs#&Mxbuu_C7y?rh6;eVj?GvS^K6rO^sK7h(3 zocr621$%o=~5En<4cAzP181$HpY+Jww^~!p-7zyD$Xbt zL(F8TFha4!Fo0M^vF@`}zTgxnCISPTuIItZvUN>YoclQc<5 zkuFNblBE39dee~Zy9?==$C7T*TT0!QhMneUQw5&>NqGM;4$w z@1DM}8hTU|6hJ`%Y|V<`JLBQSz39JTm|Vuk{J7)-wME~TOylGHvc9Vx_}IB-#ZX8L zK~J5B(g#q)g4})gPQ3I+Z&_V6S3Z!BBvV=Cw<%iP*7`wZ1}bfac0dJ&DoHQNO9Jq%araym3Pbnh;7t~= zKfM!h*^-zHt4zxjjNY`Nqf)*CWfHI}w*nUxj%`5!Y>g|U-~p`d#M;iU5Kr$&+0Exj z%`YC62j=)(@=~?FvyU=jSF|N7mbgedYMFNT5_Abtv!a2w(fXG|OU9-gopq{~~ z#j0S%AfBSCq!p4PG>DQ^OG*q$tJGpxYn0`hW=S%|lG24Nt9yjxMj!3nD0N5vmZWz) z75}_feG71-!0BY@ps~WSEhvDkH4Ip~q9eck{TUoFdXel`evwjBiyXS!M$hej9VIo; zsllg%2VFg%4nSpKsZdKB&(KDdN;Sk0C#NVz1WyGcHpChYkRiasIE2v&Z79ED4B`o5 z6&qLr0b|AeExP%iqX1OJp$-PbX@D?9v4}c_kOk@_cZ~|z(80H=;bj^E3v~ok8%wn@ zREtlwwN$IJDh4Y`ida797gejuWJR-my&3lI2orun_ENQQdJ78R>k?d)<}&cU!Y=Zq zFZ|qHd`$=wm$Eiy^KSYXhtw!wal? zFB7`y))JtIdg0|-th%g&igA`dlzyv<8iSD#Ud&#u357QgRc}cFM1Z>}Vw~`c3aaX0 zgK*1K0a5pQ4HZlHVgaz?{_c4gs{|ULM#1wiY9O%Gsj}2qJ`4W1 z&g+(L81iE>Z`#&B^$|yHVXhxUxM7l2kD!FIn zI-Y$2UjA_l((*6hNJw;iomAZpqPO+*sIHG;iHTC?E4^c749zsMgLrH&9%ZUzR8e)7 z5+fKB38O#|U_}ul2nJM~GoA^so`+{Zti_7w1l*}mG1|-m|k`OUqJVY(1CD2gw zwdeul!T@!^flCS?Sq0#J?Ua*~7tLLJo?dmKgJ7_s0ujWx@WCmy@a@#11_C^mi!w`K z8iqM|tZ1mAfmNi~nT&TTHV}}Xjlkaj9z{l8-I+@@OB0t;9UD>7P;>vJRP+_}M{s}ceE?{rNSlNTfe+Rc4thZWw6M;+m-4bY zIq234<#*4FRsP?7jGOu?hrKtNT9VxHvufG?`2+cR%?c*+arR~1PQx?~r8pB%o@u1A z!P3>HZFhWnAXEu-M(CgrQzZ}~6GqBuktQM-$%;l27g^@WTbD3Wk-X1S*=UPiK>lZimL3i5rsP6|>_^B(x*_-c@Ow!JPSO;A(8z0XKmxu(1xkByp+^rf zboGTDJY|(FXK~}9^$W|!#+GW}*L2CG8VG{qnLc_Zpqh}E#vjJWL6c=}r|q>J^WdZN z;U8zqBW-Fq8uZfhV1CtpoP2P1@g6oBIHZyPa}dWDsJuc5@a;wL7j+kUF5;)aBQK8O zqGX&)Pklh!tgfP)!s1W@FL}L4p8mKow$7)hZZ+*p5nT|v2bLbz(lbzciJ?*qo)O2l zu>lz@i0}4X^uMvct-$+I)Pj0~@dPqKPGN-S)C=K|j4I2p%#Io6rIe*&Sc+w35K!y4 zBb_|6B2cM8mmCCLU*SD=WJKyCnY;o<_Heu3uL$-UtT^9qtc;`e9ibEn@YlhZ!e#xpqv+T`=Zd;SmQK6Tx^VtQ#nZ({TZ zdZ|*Oph1AD1!FMA$6!Fy1Y!Y4#z8Cv70?WYRUpVPzk7#KaCMe2p zxmhkOzC>v#D1g>=1{Jg#?poDXeza(?&RY8)Gh^>sJ-I6M1^rVY`PQ;P>sVCMo%!p3MqU1A-Sq>c;#wFp4cb2mJlaEHA^x0B3~G2v zN}nC5?_S=i)$D!Y07h%3LjMoAkX_8JI4cC;JxqyNNhk5>tV&;jJ_foOXdhVGiccJe zv}ecxdZAl^MyQ-`5Y;gLmAsT$VL1g5ViK8f-@?7jT7F!XM68m7?j7;S0LC~SUT>AP zD62$S0NbtnWl)3!{{AmGgl0t6{*vSZe0!vpBI(UW>0n}pEplTgkP6SaehaW{` zn=pSK0bmY1E4cqnl|bOc-ozZ4(uR*k5H)W9OkUPb)kSS;oFZ`fPsBRnl8Q&2D60_W zitusV%BRUh=M~8wYf|>uR1hhGWerG|Vqj$__}ea8^PSgO->re31qIOBtWaM>=C}vH zqBLH~Fo9ha`eEp3lyZfbb(>~9!5HIm@*#>&7{_KAa-K``5h&IIF@t9{`~1S*=kI@H z^$jL0{k29QdTiAxTI1Y*qD+Ek@HEUKL?>D;Dkhtvti!NIl*N+dqae*++C_U8D7K5)g zOx`(Si-caO20`xN8V?h4=fTlm1r2lFg7|`G!RB-EzXbqZ2%zQCm*H)Y=Fg!8?xf3a z=BUXwFQu7ZsHl=-3ya#d0cV^Dw6ZSAx8`D_Z?N9H;OT zU`(E#==?`R%^F)CSm~-(28gx0;4#GWXbbr2Y=Ko*661v5#q(-y&hm(H?6#1itNF+_ z&T=7OY}nT0+YtX}JsI8jM1>4TBrjgim**y@FRV8Zam>Xq=FgM!P{>XA-0;;_uxhcP zSK#Uu@?_Fxuqvn+JOf6Qz$&Q#mLhy?V5%tdI*nrG!hK1C!a!i=0?^)QoApR-d0v>< zTza;B@!95yKvyeVop&GXdO(Y%D2}cvE|!vpwAf?@I7&w{UX%?oC&+NfBwt>AEaR_R zY1@insEF=mjP8V?6i2aD9NkZ|_d2vfp}U$*Rpq&{Ht%dmzH+cxSTKiZZ}aY>L=0gk zu*Ov$x}1LKwu}4zkeBs{GI?kg>CY()AQm#i9WOVh~^O zMZt!VfsuTNBKr!7D9)0L5;USghkXu2^mCOKMqEjBpmfrJ10=)FNyFQ(&tk$$ukjh& zlce-)6i?52@&tC>^)>M`W9Y~~bOs|;N1kX{UZNce3ScYn0K|C#3i1x

jLlJ$4rB zt6mXv!eQ+7{7VWchI21h51#0ie#fr}UQ2H$WJXcMAcdZ)RD{+jlW#}zSZMhk?&rdH z&4IoA$5}4_w-8*4ss+J?ML}L{9u^y^=WMq|9)oHwd@|0Wi$2oy!Z=1>8N6oFB&CR@|sN+8419U~Z% z0|3>4iJ;U-u|(|rkQ8JDL=+on)>{xUjwhhnght%-dRtb|MueCRs8^V6JSJ<3Phy4z z+JTzaP9-@?pu>qT%lC$#&Jl0_O~3!tMO5=fK>=(nIDjg$3iMv%VE7CoerNP&kBa&I zB-$ooY_Bjj*=}7)SmQmr}K1mc@u^_Bo%U0781Ph{?kwg7EVUAk<=+A(nTgh)+qg zq;che4cvA-vGi%Wz6%_=W-ob_iQ9a|(6<5uC;>Kr{6W#@)ZJM?6DRmZ{$zT_4a2bP zVwK)vXlERntZGBVxq0zdLHsw_dT1`N5ds4BvI##4WA~_#hmgK&5X8Fjiw$CF#B~rV z2Fg+QY;_qH8`fRhtk>Xr6k;SNd39x)($I5$lc<48^mmH^$`DGh6#GK^ zm}EN1P2Pu{>F}9cBCf;n_P~@v2(U#F=1scFP?awy&i7BLN_@QCvZ}g7Fw_bo1qK6^ zj*8d(VLwi)o6NwK_ujJ;K*Fr3PdzyAzDPBL4?JkOo?TfSe{`1 zZhxlk$q&Q5_#1FSK>>V&3IHlGvfpdge`N{-(#jqPJEL^7NdW;YOsTR|V3se;5@m6!fpw`g8#GRT($~Tvb?|8nnK%JIvx=h9Qc4o#l%)+74UKg0p}%+xB1SJ2N^L;ex=KP3 z2S#cW;IL%{Kvuw`tUyHQlI(X7&6}GLlE18h^^#&Xme~r^+?PDhT)lsIu{YJL6ilgcstV=o0z^a zy%6A2;1CwFm>$p!U{Db_4Pn`E7ESy)J=dM0NEcvv0Rz~ybw1kT&vcoc5q@{6%IZ$2 zKqUO7*OYWh&8y!{VNZpDSjxl09fUWtNv}K&Au6F+XWUkX21N7rvRk29edr$N>hQB( zbzZ(6frKhGs>}zbtL5W#l37*7)QsGY$z=nofUAr_JHW4wBUuPiMmStJ4fqtHMlzW{Z zlq2*fMzQhJMk@|lA8yTJsnY2UrpF`IB>CcI;PZH%d}M5Owh*S_vx`=9cN(` zU_&1$`2ix=v3AfqVvW@fpYGnG5|WJzd2%6O-s2DT=M0m(0C?erm^o!?rea-McQ7&b zCB_hhN>#kTqMiXO7y<%O6c10r??;4NNRy(ZCLthsl;rH+bK!;Hl;wIXQv%ELmED=1 z?oR!I`(dYu@)?i`U%i9QWLh=Yb_1BL(05_68CNCLdD!D)^#uj62_UoFb@J1!z2+FM z`cn_&@LOTRDW<5tevo(^p@uybiUQ4X^i8f1CwGtvO*onhpN;wyc;Q@ukh-gcO**nj zdEQtt6_Q3-o@wOKiZ$&&9JBPOTCG`cFI)VS4tgIbf?uEgkY0E1DLkaY!ulcs^qSJf zucQDJ%gE`%@e|;})9dAiF=xwTqaN{>#wl%tT@dzHVW@>7qlocc6P6JF(ZFE5$f7s1 z^8b|raM!6J-yu!FB2ixQEN_e+!J1bOBoN8#i>?W|;|9xJVVWxM zr6uomEhvC5TZ`^KSi0B$9J%O7J#uuJJa>%O&eNJ*CZ>7l)q~O@Q-i!C~oC~5SEdt1!mCW^8I6r+br!6^UN@#_8S99S9&M?~5YASKFj0zOj9!~sV!>7$_ps&M0H zRWkIvJ88S~LUzCELhZ~YtUmlHu-&+>Y&=)|3c*KZ=dXrW04(4C9>(1KflL`;WG6jV zKRC9#RvjR${P_;>>&jS>S=(2N*wYH55W0srMPR|kLc&m#DUi+Ex2yt)x%l`*;R!7Az7Q}m=^i}cCckqcJA!adG{vMS~0R}~b%m*4z4 z20vI9pI1v~YuU+H4i@MeSYmk2<+o`v;>agz!;x9W)#!UhUEEse!`IBa)?B-?uuM7P z+)FsUN35dZOu^+IykpY5w&9AhnaUyh(4|jH-@OCo9qQ}FsGLT?0iZ_+6y5QtR1fN- z{SMuOcR|`lCBU1xY84W|iD`H|{hsvo>*TEX{(5o>4$YvGO5ACFdNgwC7`oKQI1ph! zD|BZv&_xXtt5E}(fHX>53%h45M=xE* z@V$!hg)5Zy@90>L)5)u!g!emMNwng-m&O}^=(o4DkbOPc8;OIKiN-ft7T zF~AyjLl|LPBZq`5CUfF#!?}*G9~U-1*B=#%{5RLtnw)^FA`sLFo-wZ7c3@ErNE%pX zJSJG>t#nYnV9D*Z>Gw~)TV9vZjG8<~KYC;wcmC@c`f$8nS!<+i?U52=82{dTA~&9U z4X+&xeSU)`l3(p&uR0z44BYd>Ir4VNY&za}5WAX5+VjPKGx7l#KNmUvXV8DD>cn>m zfK}YU>%Kt|4gmUkU{rG0$3|vBvO`-S7vq2K;4_gdIGU|5u~PsWzghy+54MF?2UVLX}LE*3+o$>*3tbn0_ z0kjAL=06S_or+b&X2{qKD?H^*KgP>`ocZg{CliUq_P}gW_HFkECJem?-uMt*+!p#= zCnS$!uUCJjZyxZB9D?YJA))08cTM4CqjZ^D3VzGt4e&SW+mfSlDQ z?(Zh7IoV(>lLC0d!pE;&#Oi&UHbvv#7?xo9kwncTL$-yUNrrogZQ%2JA*=}HOS2F(DoH{-#t%}@jRqOw~z8n^?O}yDc@7W zt_bbLRh4PB)l^h6n%g#a6HV5Iwb6459DtS&d=o1d>gA9MTW15NY9oIOGR(3!kj}o= zdO#4qFvq0I*C(RF35q-xO$Yw!m?Z#*{|kBHa8xBg@m!!cbAU+ySsG?}sHTl{WiIv7 zL1*YM7WRdVf|nlsD`I2k)%P67qzJv;t3k01dl7k<2sdQqn5Wh3}D>A8M^+0-|`a338fn% zzLh@wow0J-1#bVJXb%TWhWGA#K*r0%ia@gQ!|t}2?~2E6BD4>$Ra??pO;X1~em4rq z|F^K3NmO1V(;#Yk>U!&|g}DY^NW*;lUQYO3#vo|&R@5RH5KFTpV|l|U@8GHsjRsgUuBj**P9lOYp0fJiTUDb_gfLKq zLmJB1tLWm8#a0FE24i;H8csXQ;S~=w;*Jg9%6*us~5OmZNr)z?9ByqDpuqcr{${I!h?I0Yvl}F%c zZrMX(h9hS*d!97ocNbPzET>_ZWV5cXSl0=8v8TKE_etA!Q0_u_c6#v()^IQa>r78?0 z#@@7Jw~AXSVJ$Eh{7Fjh1nOb*gHbOCooZP0=Y!IlBI;$!F(W z`>Q{{6ZZK1K7VVoH)gXhbrWCgfl(xw8Rz2_KN1%A*USAgQIyl~KdLTX!^e_gGRkVm z&KML?2y$cGBnpkbWaPTE)B{p-!(pP%M-q;XD@7QL$9|2`v?R28>?kQCQ6?}dWU>3VL%)UW) z5?%fwsWW%$8Y{A6jj*3UWt6ui2hbD*`0K;~HKeuT8gr&x_niqv%2Rb0^U41Lh5njB zO_+zw-?aw=7tfbuiLrq6pMlIAggxR~@g~F>oG~0{VP}MLahgw483OS_P~W0z*j%bW z76T9v&&LF5f*?bHAjT&U!;+-oFB)gEo}=sGWf`o8=y70v$2#EWG(=ECG zW{av8fg^u)EeDp2dFVjNQ7$itHGK-7Hk9!FY;q zGXxYyX>XZ36pl0#gHcGE3{$*Do*QJCnQwgs;jrfq+cv({ox5wVbq_PLWGHX#H$@(Q z>6dcCz!3<-zkW?%dNVtK$?BSv1lAG+ZVXwju}Rn{L^d;Il&Aziuz_Q!;`w;uVJyVd z(lyq|(Is{4(((Via^Vo2Cd#R2{7KK|I4*ehERMQx0ospeZE6^LZOWe z;{(vW8O1TuW8MHpzIBLRb18m8MjSnG=2#uk9v;XCrzWzoCcPz?~amm5X9j~ z^$9e_Z)CbL^aHx8r7WBtlkNmp<(_^WcuDP?rh=tANHcULtNLkowe2P)u2z6)g9iKOzeJH+vh>c zx>xBs;{fp+K4Rgn!&v((Xnzx0bqU2AD%sx(M_Hw>4TU}&OWt&<(`I^}VJ1br0L8+4niqGUu_K)`FM zI$l40Cz6iY92`gSxFU(amum?M5zFl4h)>sSAxp^`R&5MV{Z*(o7KJ#e38!ytd8C_25E z`hgGf8LQ$M_N>qw6gmQD^jfe*_iT$RfWJHk9}R^+17)CN0I3yibG2WZOfnc4ErxEY z__$vEgaap4BsXM2S_uje^{kKlvzBVsTe413y*jxzSK1PCtr7NP*`Su$Sl-G6yu)8u zJ9Iwux%jUfGNCKucCTUD^Bwu&hBg!_@V#wg|7H$+UEd$3=sAx8Cve(5Cn{zQNBkQ( zx)Y3U>z)^1RJ1hRz424=7^ct}>q^Nnd~N1NqCN`QsVTW>$aw`=Wx$SUrFPn#yzpxI zujU-YjmpvJB~QZ%0)LmBmCuF)?tT(wa5q;tWJ{gm2m{bJk;ezYX&zMFkIov5a3pGO zV4x?AF~UCL(Z;yK9wM%`MCGdC4QVx50L`m4*W7rm@c!p!dGq}}IOkAcTohPX5PvJ*HqBAX>A-qfMR|C{ zCvOkC&GopEKrRC1$BO((D7%(HwuqAgVP^u|C{f80f;Kw@$kK|V$B|OeyjFC83EX`N zOO%&;hF6Lk5-+Uzb>qt1cOe|VuDs3LjOPQ!oqZ0!yc;=S*i^0fXjo3`Z^qg}Jb+wN z#LV9+sGQ=RX>%r!;7Cob=}l8yimG358#Bb?#B8+^kz`l@!Wq0zNdtE1FPR0Nug!@2X|-?yTZPC=I+LI(^T zMM+3lgc0VVB?wR(U=6O~s4>Jmxd8U4q%ac<8g5SwF^RxA(S9@anb^@99fdqqBQ8w~$HHCzgq25lSlb zn)o_U0Lkw-l>dS_^5R#*n9{{igR6fDok;GDoD;ypZ-8GxfJV`*L%+Jp#njGdIlqw3X~nKu*N%& zbwfw8VCo^*?{P9alq_fATSHmrfd+B@kZajwLd$2d8H;*e7L*ZbJp(()qE{t^K#c zbH@m4OX1}Ir=&!Kn44(|n_qIh#i88+51=QXB|Ip~3JsK1ZN+~@Ycq=&4^)USAnfBW zV(^UM83F5I)ev|AzI78`T2ntC4g1X*%tjuNiX%(8*#{Xc9@d9O8!%5T9|=s46|uCW zf%R(*b>_qg!B1xGN%4s;VyJi$9{mJ8Z1x>;8Ru$iVp%JoXAKheD1jfMWo=27Sr)7h zXowi7Z0U?s)KnxCeha8UNu$=yIY|wH&zY zx0H9T)#tv#m2NQwAYn03|L%Qd^c{1B>!6Bt`b>vonDK*u2JvfnpBP{mr9y8tv^7Eu z3l=xG&uCr>tQ9r%l3ZH@lQ+RgQLMUwm??n`3hNM7nt(NUto8zynSdodloc~C%ppVZ zv-aedo$rk$4Z{C@4N)x0pKfx!wN3p)B))=rth zI(0aJFG8@z%zsl5P@}p5+$ePNx{Sqv-YV=(f~8NqId|^wzo*IRs|U!-kKZ7@4?9U; zPuA*6Sw~0OZe=`xycpnI9V9=M88RgBShuD(m7U&H@fBh+&?MBXNSK|L*E*<`{ZaXuKhGiF!;860ZqT-!FX>>mGZ7DsqX8n zaq-PuU}0|&D#TznnkBg<6oBg(srihN%A-joBDJ~ZY5d+~8Y zyjv2D7Eaff_xn8^R>02Fw>AY3eaW!RnGxlk(F*egSCm{PFV(-uL5Ch9 zH;uYEp~cz;Ax_2!$zllNN>OzlE1(rF0e=JHSCei`Qp68C3l{p z{>xC;8|+U&Yyc?bH5;gHQ|6j>iEy3V!dShS9jyUTVj0zRq9x&I1qvWgZZ+4*&itAK z!dSof2EMNzN8-^PNPpE@fK9ZK)`lrxUoe5mHYm{$12SSzwXF1&zj$>_Tz?%kum9*J z+4oO}3S0pCQ$+`a-O;ud1(44K%tKROL^;%62C@W|KW%*Iu0$xqkc>lh2WV&uZDxWO zv_8QP+wNh2B~Uy8ZJ3icz_S`_0Fi3IbGEt=V^q{*zfpqpEA$wKZL%iBcCz$_ic5hEY#UWoV=} z2Jx7}>Vg6&tisw9@4uz>cQB?pJ4jxm7IfbzK_cod99G0yH;T;1&^M{<(f%wd0ZR2W zm^Qqi01B(HzRdfNDl5D13YW=)uIBt@r4%r>Nn7u4K0?YX0hg$MBUprXc!{P=wgf5iw<-y zz7H>gH8yALT0sF6R;ycoy9=&ga((vkS%Rj^T``W49Q*Pc^#H;QjS8gIbuPAwCBPa> zv3m5kKBK6n>?>gmUkyDetSzywR`=6a(3yb|ypLp1;~e4?w>z1t5U>@KRHRMGpnN zyD8xE7N2mQr|d<#Nmk|6XW)VJ3c}vfJ-S-l&y5PdQTSfQ{b9Ml4FXpv9DRjA4?ruj zg#!EY6F3(5b$H%2cY7YZ4B%*_V-0M`S(w(su~v1}cH+T5ID%fRXGnZ0AErWxKs~Ry z(U+~`K)95lWdDt-L1QZP(HO(mwatI}{dAk_h6+COSK+P~`NB$?%?<&|$WT;@(6*}- zuUsXlqN9+;G9yq9R{`xIE_0+^0A?Zi|r z=aU!T)I*PlN4S%q(G(Gl73W(>j5t=u9&`L-X#-qae?3nVQ>~iWzt*TvXg@iA=F?0&_{TcvnNPT4rv_8@elIQ=JIl)A1m}U=E~8a= zyCB(L^SVvp&u=ib~ek0KJijc62kyh8n`%qEuTHNqK(=0gnPB~*{^BxgNJ#&2>yMg zv-CH&@J%+m9QYU9Mq9p;+u70+4&j3V_v2^2W)Gl5XYid5^JNkrwAD%)Y}XVf!GZ( zsjt=~%So|h-5{2ZyqxOyZXiSLB%yc&^*1>yb}O0Cuk>Me%iZrZ3I`5v%#cBGIPJg+*wqmj1~U{U1BRuAtwm z4ZAE+{pa8|Jo6;XJMJyQY3N^{2as6;URNZFmCCP=S7c(T;T8s1sPYY6L}{;(z;&ke zEI{Bu3qsGDnGcsqD`V? z{jCHH5KAVU?7PLwfj7nCXD>VK92B+3%1$75%D@w4y#~BnoZ{iD*OadKhwS%fn2=$G>8`}bZOYR*OKXAC)uUdb<}32&qTu2z?W-dK4yA{2!v3M3XRB=h&d z73qe${+`F7Rv4^Mi4Yez{Ul?Jqh4gE+z5Drr{Wr0sLjQ@1(DBcevPIhi5rj-wFYkAsA>sZ?2OL9S2aU1JGkiFG74LVyHZi}VZl}6ue)>*O0i1l~5}{Me zW~b?W&knTR%8mQRUVHQ3MG{lm^IS|_H>s;ZS9hH68_OWg5Es{c7L5k5@Xcz1Ce}Vu z1o=uJciSw2FG7bv*m*HDo)Rhz)C;1;W{Nh~inr29B#z5dLO&UBgXL4;9b3{_0q4mJAwrs4;keW-OU- zin18v#!@Tzp3sgMZH%E$D#IQt{N#ic74N+QEcp|_J{7P>>-4^cywz7mo&BiZeJ^yd zBx+!AU`RwY`MR~_MVbkGlZ(nzPzD4`MwJ*aVtv3X#aFOegkY35GIf5Vdv0;@#&W!o z2Ow~%!ljCw70#q`yojRgbJ|`*PlO{dj78`jD8)k9;XLwSn@vK=n@^`UB&mfXlnbi` zP)5VDRJGv^AhhpZwp)w^@C?S7++-kEHHuL;=Ps5BC{m%j@i^3Y_KflyWK6r;{Pu^R z^|3|+7lxNT%r)19?I?7DL1)VO7i!ZPq`I~5Ti9AR?CRaJ*Wv+jM*I=(y605RxqE`PD-L(DMUK$6M(Z#MwuD_Q%jqg+%DKy7Lp|E5o=|B^>x6 zxq+9~g#+0EjQUOUuD32QeB9i8@?Po0&0-n0Bt43UirF`SH09o=6l6P+--Ig~UI>LL<81Mu9CnG5TS!-obVVofJLp_BiUArTNr&y4zR%@3^X2nA5f%j<}zyjwPMpl z06il7%k;S-bNXnf-%_!`GAd9`_6%JDhvL~V?k{)%TbnS1cmW~FN*o1D)M8b$huerD zW}zks_#o5B3+>~4yy{Zj0C2-^kC)#yPSRDEfA%?m+P1X@Z3ollIY~L_5n>aTvAYUm zjmM5gFg73%bzOn1IBaEWzsK1SC6^J9uv*YzaPUH@$6r@p$gG*mfn4rMZTV86JiX2Dg^3|4SBJvX&!{rOK=J6Q;Gu{y7&VAB*^yjZx7E+{P?Qiv zw^*ZKJPaO2p;tqa0ble!{{Lt1yu;_X5KxMO3R0zr^bQh0AhZAp5Yl@ux6hq&_WJ%f`^?Nu0wOKB$vt`UWM*=v zoU`{{dzE*+@5g*NQ37<-g~V-){s?2l0Z^hk^=6?d)$zRnkwT439ll(G=y|wvlzK77 z*Z^yE>3zuP8CQe)i|3d>UN=%JS`1v8(ZNDDH`_@At2DZvLFL%RpoA)4- z-=JpzTU(`{wRmdLAXMfJfvHZbucORsaUqK(kE;-Ltp)uijBDk2^huNKAv=-a?UXTi(Z(cj}4c@N9Pi2iP4`p6M$YO zq}N6~XLut7Q3spX#hZsJHc+hbFebb%&j@wuF)RouQ;l|Y@Nxqro<Ln zkoYC^%NcqHVLLCLDaaM*=bWTpxouRe6*LgnV53Eg)VWRu#4}+P&CxJxWGt+8%}gF% zEJn=p@HNb?`zQv3Z#)ueh`B_mAHuXTR*}HP;~JvOKvClssSz}%XjaLoL1PBrvAyVL zz2HxMZWM-iAz(-hz7Yn9WnBD1Mi^IP`um`LwK{h%HIEtwNVWWS$o2B|pPy|S)HAH< z`K2$K1NVh}4uHJ?Pe8E0@4k=vyMHLV-?fytD>E{8n|Jgh1kTw>cRjL3&OEBW?Am3F zs3P0FcAW121J(DR1TRT%Q^FqjY^g%_K8#NQ03ZNKL_t)dxSOt{AD^%p3y=sbwav}+ z825iee1H{$RxxFp+n7B9{7ZIKd74vrlm3)W{Wlk#_kg^=HQc>FY67;xqraN4bY#NG zY;B0S#B=~pAo6uJAY7IP(J)5RBHgtJavMJOT$#*4F*QJ~5*W$Hh#6Iy#nP%ui}WA-X8uAT_x|Gl$b`lF@D$*m1qv4lO$qjX zW47eBsGL)ymdFn3*C6tyc@1Id>$o%!~^3AiXjM; zj16c}L!&A!C~Yb<0V^d-V@|2}6EtW*HfTeQhw%(m2-PZ7*)Y>wVU!9Hs*F&nP-4Ni zigEXpJX~9gl7I5W?hflS)-Jb!1HXXDCoAj3V|x!)1jCtl)LpEUu4e@RlOB1MhP_|a z2^ZZwt+eF4M7(zofi$Fbyw&!KB$g;tK5CTpg2XT*Rm)J`~wo5uCm z>#wWiB!;Rojgrd}RaP=vi}FoXdLRU>Z}D$pUVunG737OhD;|TIVlA%&t&McmyLM9f zao>CLf&(aU_fHOzAN~Cv^~U^Jyj_m%Y3evZgzX(mLLMCPd6QIMahXIRtcgdNZwbAD zu!}CNldIKyYqE$%jYkS-2y(0tVUedyvu(^Xu&k~RjkVj7egAQ6_QU<~d%vyv_5K89 zdgD!1%2u|~ODY(YvkbtaABJvfsZgO@HOx=ABpKB%699Rjt^9Ae5hlZ?gnG^SU)VI93?dxM#JbC{cc1@iyXd$dleBZ<}NzEqi z{_-~i*AsW5HL^x5w+T7`WDYSMDsjH^Mp~L$m1hnJIPKUHPQECm9GOTaho^TCkA19V zEIG1yEQD+xgy>yP7eqK=+_l_X$*>&M z04CfZP!CjX``C12BTrnP1<3DoIPwt>Y>q$!r@9(KV|_xvOoLTc12cVLIyvUp1WUbu zR_oQK684bv{GVUP{QMU@NEYDA`T2yPfl`B|AIe~b zL85dwVf$vxDuERO^JQ0B-2M=_1iJ`$1}__iI#Dhpt{wy1ls#;Y#J{(E>s3LPu#%9@ znYZ-tn@{Iv?)uVmXOqAE7$)cO`eo;8Zt@tmz4rv}eQ~%x|4`PX-_7a`qv00dwiV%s zpHmmB%(bS+qU;_7jIf}-=Rj=HypT|_A-QDvU=qJP&V zjIIf3qMsiA2haKpLg|t(i8vHh6q`DOyzzSh?$_B!Wz`Wrs0r((qWB_MRT@QECNN7p zX5uj`>9OdCi&%C2)dXn(R?)_F0MxQCzx(Nfa^$1v!^{89ysd`I*Y@tAJ8pZj@WTiA z$5|J0>^AfDkI707``(qv-z4IsTmvkwzJLX}B=fQ`3(FQ3wgmbhbdj)pW548Sns1eJ zV;Pk?3zed<>XWoEL=71#)cR-hR>c~YtPygm^YuSZydDa{e96ZV(K3Rt0&}{Q$7=WumhD6+7Zb)z?XuEEV4#h}%B}mn zs6g$i7AC3*h+qO6?zBc(W0jc-Q#`|mgZnc5y+de?wsfg26=V{;G*Y?g=g2jGK{W&T z!jiLkA_UYON5Xkf_Uph=c-ERdg*Nm=sEqMci@nagLF=Ql={#;uGEzR|^+Y zfQfkuDN$w;@T$OTdt_Mpzi}%G$ z8xGsfw*0aUq~b`nzs>h!3A(FNDT1$r`tJhQ{3V=$DS0k&Pe+P~_%>A&G~v(Qh&#@=q0f zACu=IGk7+j&4YK0;SGuLzD=^Q;q)#oLOlmLkC-XtGy)IQ0@Txo=Oa`pq|@QIWF35R zB?vhMANlq~RAGXLrvY}COEH}_#h0#{2 zbbNn#is<~#FA)h-ezoUm*z$Dip8}>AwGUed95O|WLU~Y8SgnYw(!&Tl1u-iBK7-oC zC9$dLGqWqBZ%|($SF}?AXpT7yWB?07H|)+s;LyAB=aeX<6nX^3MqYX}%tE)E zPxmEtD@%cfRi!!c!?E83`*u0-3eBzf82Y%l$;evSbSbJD$VOC3$^Sk#&Kl(^v}m47 zo{6{_WwH@oOc77+xt3l)o)*Ei*zzX+YG z3U$`dJ)N|rK*LUV{m6N5waSsJkXsQ=UQ9KHqtx&XgmRJfXZtsrBx;f7fTO`OBI}eY z)oOkMv;+ZDVp;C)+nqT(A5F`jLTzJOR44-)#AQD}A(Z&EA;-tQXMH#D65vet_)6l* zfGq;Ut|;S-(w(rsCr@1OxEJ#pa*-j32qGe*_(>&O&8KyXys5PwD`-TTVI7K648~g0 zC~J%`Q-#;lrM&GgW!3KABzNIL>^46=Uty$Zw*%B$b}WJX2|4f~UcK*Nd88@FabtV3 z%k+2kqj&{#Cgcca%#khUj&N-YUHI#t8u)2H;JXum7l0iY`_tFutt~NLK(!}~5}yee z1}StQbotHNb2fiHg-t>>3q8a_4nSR!*9V@oh6l30VY;GX0IC+kt?uSzo8lEV;`i?e zQGSHZ3qo2X2kFI_u*ci&WT?6c8}Lf3o*R0<&GZv`(Q+f`U)1B^`QhRRK6decmB%gJ z$i;HZ@{}ih!;9ikk0GWG+wXjTs|LHic>nVfT51sqspo~EptXny9zKQ;D($OKXJK2b z{2|!T8g8tW)z5 zgJ%p~Jf)hS)Omo4S~x|%E?3EawECKgWNT~lC^dS77zT^rM+`C>yOl$o?tr>BSSeV3 zED~5!z(gZF(smjj0O&QqE--xLJ)smUoiL9O|oOo>F!T2 zT`@3g?06NvrIwza!9!51?c8(uxW)fj#;;hO+J^3g7ST>AHtb&jj0p{|RcJw2<|)gJ zWkH}at1Zyknn*4mcwnw&&VZbL{1`sXF6_$l#jet6UnAb{jk08xZrP0V$%zg&mR<_I zMCfIp$|Ww1gcW{U+{W9CMj@eSC&-LV9E zBm}K?{QDbt-sq`7&K!5A zdS0GxJdXo$h-ysOjb=175HTmST@TDu%ZEXZdA?zd@n`{3YRLpS0-GjXSx&Ypj`m5T>jewQ8MJ15jXs+tQS+4 z0E@PJMgGb-@%M)hpF%jNr<$8lyV0<~U5;n5-mO>3OY%<{udiywDwbqRc{XF{ieY zva&HtV-o}>Mh!}x@epgM5}~K3^uSUcxVdNoz#|n^EHua?75~pq`yRoFN}hZp1zW(yBpad9TH^ zE_q3nI#q_Kk`&``UPVeWUzjbBkSRAH-@OYzuT+Qb;gLh%qR!&{v=* zf+dcM5crlr!AgMd332sNRg6MR6^}6QfHOEz`!X(5SR9sgF8q&)GBQ$1%xako3?67W)18FEp{Zt@?NJUfR+f zp$uUQtLwi|(HON|pvvPxqB(@61Z%LA<9H|V3+ z)H0AG^jEWP(1Q*~=K$;pTaB+`R7LNN=Zf|WlaqUZ{$w!P@5kuhxszI8&8gJK170(R zcM(=w%`aqCmjQR+r;yQXZAmfm@p7SjxW1cOR0fOyH4zz%XdY0rzV_nwAL?}MT(_fD zA#iGASyj?Nn+O>o6DVm5Sru})I(|f9?n%MsND+Zce$_kApmXuJ-wE<{Pm>Q71BDXx z=~`Aw+=mwtgzCd7@nUpQk1~pgDmsAMUy#8I3!6p*vTB(x9&eTpWBz6L6Z~vT(Bsb& zI6=D>Usf;l{*nbGGI8X$$&Jc#UkO_6kZecD3#g98P4WdLSMw4%Y7oXd;ENRP?D>(4 z9y-IQfh{2aKJCr5-~`~-FakuN$=x+BrMB5LWwb&?$YorKx=5Wx?@MzSl-Hy~X za&hHTUeD$o34o%3B?pxHLN~9Rn9r0$U=-La2~$cHLYd9m`i?{U9hI#d(r>l#_|PPH z{|5(?`q|G=MuK!1t(o<_w=`9;w)?w5^8mTf#nmpf&q;{9#fs+eam5;DG{kvM3?&LX zMb*!U*rbTPC|tx5y;+#HH^pY+6Fj|-4FmO)!iM!ap`lk&lsAx%n_uf|@cJ)b-?{uh z-Zw7f0R)UeQOZQ9BSGAMdE`IB-LsrH9%VqXBVMaBrHYbslTo zM-y%g0%ZcVR`JdFbeI6NNfHWWswDH3)Q-UT6UDfZOt#RVFf9W!mmEy6x_ih5R!*kK zFv`b1-q4r4w(TkG{_CFGcyYGDOPDtU%Tp+efgB;)OB_?I$rBVyq4l>&k3j$14w9z~ zraiUT+O*l9^x8U`(kI;HPx{>Gby+Jm{cp5qo4FGpMN;RHDNbOh%;xY6mz^Bm)D$I} zrCI~ZA~1P}lKcu?%0L4aDQ4>6U*ED=6?!j(`l?N9P~X1ZUGllm+HgvP&GD*%$HilX zm;&d4G&~Q_czDIhzRqLQjQxc|bDE>H7ZkrOix>`gGj!eJB-Bu1LuxG5 z4kr7hA*Wxf!sOD{()lywNQO;Be%w1I)m8Tat2UWI-R?NJOyQ&p2Fl&X8~fW*>Phi3 zIUdm*(;V%k2?8`wg5oww&!q=!QGa~ruDNNa0g4r_By6G%Y?ii+5*SAQiIbKi)=-K^ z2_0-lh+;ww2ozSU$dsWAc3lZj@>Wm2gXQj)Htq~z0GrIQ`i5Uh?@2W>w(Dh_yXVe9 z+XXC6wldLVd4_-~sx&!Jj^ru7LQqXUH0Ts{-Mnmp5QfS?3QN5Qfw>*H_ix12QVt~Z z3@RI8tY4gHS|?c))|D5Ucyj*hfBjePkZYF9~a`~GH}xx&f~6U>#Ki7 z9d*c7&nY^b`U_dobtTW5EDxzN1!yo3c;XnHTsB@p@QoBAy>|MA|C3Sp?}>!YV*`f( z`5qA?gp{};t^Lw6kE}UNpl3P0CnN~D-)ym7UPp=lMQFqFmZnoFfbEyer)kY!O%EIo1dK;3oBBz^VhM}Xf6{pNGvd??M(m|2sUluO6%P~`=b1xCnpJ4uAso-+B=6W??(cPld~_ok zT$66C(vq20c~X_fY{2VQStLT5P|D29BL!)X6pXsZiajk|yJFy~2wD&{QSCG$8^cy# zpggC&(zG}>ELGYN78{?rTQ`$708LqZt0Zx3@6p2A(4jz)a@RT+TlCum$Y5ETtWGTc z&+k7BE@!-C2mJ%Nf3hCLPc^;ZH!yX#O=qkfCLr~|kLf21^^d%u-Z%S!_kF$cCyEYG zR-fOP3C?5&ZQhHy98cPSi6|c!SSmu3Ljo9aD8hDSwn#0wy?Sy%Sk!f1LY{J3I{k1*^&;;G<*-OD3Ny*4JM{b&{AusX|<&2=KuMhFBHxxfMAD z`3rY7PER0Zl)25x9kVczu0MQ<>K?$mV_8-9SE+gwQgv)Hc(Jgl!xd>}N7r?+!o{2d zoZ`+)0&TwyRspZZFJhK4%oM{`2m^q=Kot;kO(G&-qMbeZ9@k){>m8d8(Jr>hZurp{ ziQ~i|3g<-HofD0eMQB##Ju>}4TLTjPSR1~9@W(}CW z`^26WKq}6p=7bBVJ?Blf|Iat|q3^-+KAYDBdG8&VH>2?U==ve65|zA>gNMZO0K&s+ zcpl|l30SI@oGLMem|8q*F&c`&8gN_yYZ+#7ohGC5cydoYi z`*q2=ADnFiKztFXy#g^76G$kPRZIoEL3hm}jII`3-~7%Kc>q>vNo1LE;5*~>VNEdW znNt13&BIxpMt0fyCANF@IDCd~T3Ma{GBBgI&eMnLivxF+@h9~SuIn?sxn~P4%{P|S zV=@cW=4!FpRh91Q(OrZ(v6Ly4Ae4zxrWVhs%qCEhBE-aVc>?Pgcp~cQP9yM@hR4Nm zavmHhs9JI&w2IQImPU!O49jd$-cG=b+m9X9ybmA&>H`F61RoDDPAo!&jY~XHbv@od zXaFqGc;*GwOIq>ZHt6<~bNK_7p>bi%0+salZczU*oIcFvvLWQD;JEYPXY|84nCF(3 zuyg6@DyN*+3^a3X@5R}sMJ0ZWa*~w$0W}2Fs!$_B7qL_k5`UsfxhR!lNJe3Sbrf6< zX=XYJIX2ABU)*cq65?qwtPx8+0W1Ad=Gd&vDfM*Oir*nT|7EgT7~;m?3J#3>e9^rP)Qh{c+4jr zgz{vP0W=^MhnNSRrbC`UKaRvq*kGQsogKLw#0|(ftqU(y@6BcbC5Rca3K{iitL$r9 zS5EsyTWj`y-EZVF^YqjMG;`xVjJxCr;{!;N1WGAFLLg^c2iXRPi57JIqU^I80kMu6 zJ5)W*7!7s&0R0BzxwY{j`BoaPUW8t?vMYO4--o3F7_-^TjfdC|fGV9r!=RBOC2+{I zSF+ptqom9AQ)T{uQ?>8B%k#~COU{7BN_OgEa;Mx%>oXrg)ktJ`HPRS^sY@V}Mv?}C zv`1z|e~~`(RqAR)1F%iYRXQ!eS8f0T3z`cbmkVs$hDi)WGmCp^?xQ}oXQr#(Gxa(x zy=#D4u4D4q!*t9E56Y^6&zplle1N!z$yj1m2uXF7^(#JZzzfam`Z+cj=az~Jjbd04 zoq9F@;;qRWl*zh;Dpt{8YB#I+)ShxP0($nSSLE#bex=V% zIfuG4_LW4#dwTNw=;|8efJe_JJ}1v97{RQ=2~I6d_@ zdJ>oOHz}tHZ(&!VzEWk>tj_p<11*uI-H~K7THU-mJsEAP7woCI%+5Nq`U#QLiImR& zgPsaHVsa(-%&@$@bUQ{~+si)3>)`^gxJ*W8d_4l#(FCM~ytu{&)lVxXl(06e1b9yR z$r#86#5BiLFT;Ip=kq*(rr`j&RjOhh=W!TYYAFE=Kx&lD%ty5-(w2}X;u*O_&){Xf zMEfp8CvS&%tG|uh{sMX^dfGAY=RX&ct;Rr0ToIWqfj^qD)8{e$m%pOhLw9MpDzmXt z%PLm#bJdc+36exoWt|3K10A(1lvPR4a-qe>jDKU6#2we@FDISIjTKqdhBz%CW&M)u zahgYu<61bSWd}y-Yhe;FYYM3UjVY7UuI4WVd2$uV+R&*NA+V6mzbOti^wC`4lky;N z*Wa4zqB8kb^o@dEUJ&^TC!hU_y? zL3A+sh)rvtKgXQ**OzZAezGx`ITQ8#N5yR$(tn$<*S$>*&7an#*j$ePK1$Y1(U8u9x_F_V~awPd} zRY_o|=p4$zPe%K_x5(llK=N4E3mJU*ib;DqI5Z5E)7 zz#E9<!7mp${Z)Y-9buj8ADm=yn;bs6d!OJdq?JNs?F+nj>LLPzhc6a-lDL=C!( zZql9QU~-hFO5FW`NJ7E@03ZNKL_t&&7^uYNH0MQ87d1gmDdwraqvy`X@17vuk|jwK z3BQ^;$!(_Mb4&na0_NAhC6O7!nO#X>y94aT@xg-7NpU76sQjZ<^Q=*0aUmh=$ zhkr;5Q1jR}3?H5raipESMnbofC~0V;BA29_=P|%nhLmO*U_B}XVk*QiBqZbm2xTP= zF>CN65>Qo)Dq=#quzWb#d2E2qAQF%TvO(C~=NU?KG5Q7`wMH22$62&EVB$s7crzts zD>!$7GJl+L1^^W$Cz8k4OI}K7!}0+X{`ojX&#=+AH0`tH9W^~?06d=@K%YT#_(uI~ zo}P4!W_C+$a+}lR?;(Tz52Wvc!&D{Bz4x9ikLQ+g$Cmf-+9_Ri$m$G7EgOMsl?Gtg zpDSXE8=5Mr47D~*eiEEPW6A;i zmm>hm0-r%2_5ZgA*gx!lD3_1DNS}K3X{ttCBL08A1_M6;8aA1M|IQq!A82@VtMBUG z(_7^GuU$t&zd$AqUa9{);Rwb6M*)W(I>Ebl*wm6a_4PfCum#FMBMcE`kP*7LNGqp8 z+Gr@DY!!Qg$=V1_;qt1M8q z$qe|GyP``=e?YfAk%hfHu1hC)^~bI3It#hu0^nTq0E?M8Y+_gO7^<+1RYqXxjS$CR z2*?0xOkO{be8t5$Y4H$qp*9p>RWW%D0C7T-TEs}#d3@D7zaz+z2p=Q)@xVBvY>NmY zRTvTo+paEQF0d#}0ydMOj2882i?X`KF8D?s3oC-JLQTptAo25FAIQy;?RVCD0^iqk z?Mx;-lBBc|*kjX~01HZwg~d~-ziUs3WobL1jVX2LeO=L`f!ctwR4K!4jFEvb0->Kk zm4Sp~d{yIx`-B1#@<3u-i51PaVdpWJMeW%jSasG{v~&C4pgW-R%)$Y5QWei`?ev*eRec#qIp!5>L)s=v@C_^|UX@xT)2Uq}3VrPz^{63SVxSgoNLM zr_c@P?^Tj8sNz+5N{pM_hqFbtb*jImW5S-YV>bFhC&bf%ROeP93B=2(c9E z;MMDz@^3C=t`tMBrh4KAgg%RH7NHHuq9HQ4=zBVZ8=!&-0xHF4>#{1X1Ng;RGq`%u zU?b1(0(bwQV_eGlpyz>}hjcw>p?r7FK{8Q6)khV|70?%Ww3qViJ$*@Yte&v+04crf z!y)Ms_O$Q~lwJx+G2sF>g29AgesOvy!UnW+<23?a7LC8IlYp|0pCMm=4gzctgh*0V zRJ0H(xaZMdacs`*L@Xn5OHsrVj3*cqdKr@cEFvl5PCsDngka?U7kNz~Z@yCncG;W| zKr6)YD38Z6eu)3i2Bp6vWi9FT40cDb?okpuiD4*Z4A|-b7C(D(TkfJAS|#DPK=%$* z+{lI5wH@cxvS#`K`Oo5V={vPqXN~d5ZTC$EzdT+m_IgUbdBjh2G`HG_VVV0Tr% zu9mJ6*~Ccg*Zpe?u6DavGFr&_@pfrHmBRV?*CHcQa499f^9XAf1oPg-I^?oNu|XbB z;CLS+)z`IR3e~lK^X8rd$S?kUTo#UnEf&<#b^Uo&ut8Wq_oFb{S6Tu~i-nxE*mX3= zHey%EO-407USR1S7)CDGkp=vdIXjFyQQ<^F<@1g)Z{%V?RkfsvVac()7at*8G*6OA zOXHf}`Vk)esbR=rmvY6^dw6r^(mfD%^OU_M%+OW^cEKY~Zz6kJakY9FcBz5JyX0Qp$5St4f7YS;O$2ejBz68P1N&Wq?&*Uu>^aI5EBSY==GVebo3-Y z(J)>ZQUIy}Y6It;Sy!iaqOOG4gHY(jV0;t0{St)kzC$7A?L}S~rt|n*BV`od^Jq13 zmXjo79%D8DL15Arnt+rmF?5`4NU`TB7%aWWF|uI|TO9G$JM!55Mu%3P)`7<9F<=ts zUvioZirvP0hwQ7}%piNol3StTYL1gvwd7pNf)d79;aezGqV3mXl+^pmLb!aLsr_L> zpo%fl4o9GB!#skv*PtrUzZYr+`JJspm8Un7+*rFi73K;ArPWwgRVK*!Od1&er`4=l zTEx)id6>1`$Bo$qQgyi@#Yh<1l%ovMfNdUmjun63{pdBUxk-JlAlCuLZPfH9={E!Y z)mfKu!XKNsv(NU-?fVb~G=imw z358sYAlA6r^tyS7g6(ouiKvWK9Jv<1uhSFwAKl~PoKCo2TD=@A`y|Nu>=@q5L?V}N zgJzM?1AvZ^ZH+`j&@js_gcx>JdSMxxHO!Asy!o9BH>YwPWYFH*%EN*TW0=ku7shP^ z^w)~OVbd|O8U|w66=e*H#Xw+Dv4xgtjq3MbvKOEQoB$3`gs4-LavF|N;vkZCYp+4j zE{jb*|0io(heAF=J97d5`$ie|_(aIfCSzGq6Oc7C-V8G=%Xpy5q7KvOu z@`9nVp~XYjURTy)#lsl47_eZWn-RVdz~U}v&|H5hO#r8+;o2_Hl1lR|FR%*}+_n|o zr91gKKeB(x(_A=X`1uV%MCE1Sb@w4wT}}3I;5HEc1pG>`W=n=$(xS%zC1+PuW)ta= z2^bIbMTqC?=jwP83-H;nwl1Gdepb3xV*Jn)lJ2Cq2w_dcKN0(2DLQFp=kF7ba*iYi2+u-)Mwe zXkTb$#C_HR_mv(9<>({h5I9kh6LpxYm3KS7OX-S|`e8A{cWl5=ge0<792~{nk<9y- zI68UHqKK+Z3b0eGvIb?QSf(YFx#F=ZV`<1hTda*tZ4>E=4B6Q|$k_lgTO1(Y7@ES~ z`?$O^nM9@^v1BhweWe6LS>V%!9DNXm3XD*XI+xrEztJFS3%^4Z4HS(zNjahx=c2sB z=2#H0p;x?0axAU%y|yI;_|HCt+`27#2Vj&offXvW;!z726LGyssK*ybK|xqH#;aUw zqPhY1#bXGD1E0S7`3m_zc?QtRzbpLZ1i4}B3uv9xf{wa?X;VhYE&s|ff6WTzr;r7W z6>lqnLBxJ04<*`$9%O&+lkq$7jOe_h=}N!cl7tJ znKy5kZ}^S~Bg9Y^)z*>rj4YfQ2R^@CuYrVPX;#=2Vga6c*3r|`f{0HWEr8)6_cVkmov#@q`oH(<6 z!~3}uFPa=%c!sU5FkEBAttBV6(8HqY_#(qDXA6iYNB~wW#fE*;kNt~0IRie1dTUv} zVrilkZE+T|zasO69e#&5EnrwiI9d(EjS#c0R_k!Z;(ClXs&Y&*Il}s$yVnHB08_;B zV09~#ms~(AKzALCzt@Q@e4$miG>wPsvC|_6V!wdf-u8=}mBrr{s4}&Zpq{~W|QPw@hy?X>ad*df=xP9+F zo&|?ohoU@Ami>s6S&z3h`iY-OuH+W)gO{wAXr`M)DDDo`GO1pN=%h!$@0(i*}NZfi-H-X7{o&eKcv^S(xbjrj}8pm8$&6C zB_;*ykXiCYOs=moH{g@eldjzeisaBU6S6M}H7V3^WIK>R;rkJ+@)=6JzzA zy)H0!ZF^@)vS!8*a(aL$V^v95A&?N}Yg`}rmsj2^z=y-wJ|J+F1|te;2ozdGn6JVs z={6>E7E9ZG#(qlAf5DPGqsS+GAIhEFAwMfUjC5-_zmB;K4xIX1zVrGC!u0A8!;)XQ zBatgUtnq_jCr_AQ3|p#FZo%N=`2iY8R0a?G<>MCcF@bIbe3u(w4QS{oJtR3EZabHS z(XI%tObod2Bi8*ll(__{4=jY=E$-HuG_zP+5Y>m;kEKCQ&zlUe+dhxX87x!k z`{-zZVW87oTII@vk=#>NF|8ki&yReizqO(J>It5hqMG}c*sGxwnt}+i`WAyR9!4w~ ztE>{kbLF|xe;+gF;Q8+zbc;T`b%mvCBTp~sVOn}Dld7pDy7NK4<%6a$NiUyV7@7Bn zUGevLhTcO$gK)?9_m=k$e@uGrTdKcGCza%C`Y+qf%GIT(bA!{^DNR ztyTG^!Z#2Gh>-9FFP9@1guA|ohiHHrFPy)dn*nf~4~sl_D4yVjrvGDgI|J~3{0{ zOfPLX`qowjnAg-tRxe$`wlj0e6qoY+8p;GdQ#PSkJ?^QR&To`MX%Lr)Qm25T(&5(*<6@q`WF4ysps?9&GY2# zBak+Oq z6oqaCOi94MdUWB98OPE}papHf#>}qaV2@1YWFCt!G>Iv2jX8A~OHo%@hq9tYSO!(B z8a#wSC>0iJ8x3`*4Qrj@Ur@dxSN5&u{uPhfDEqa;Q8O6$mk;&!LyyOwF#j`Mu-sSl z_&0yfC!_mZFOpeEB3ngG+T^y7fYBJX6JeOkS!BcdO+gt6&(%4;Ot6*~aQPw_qXY^o zu}oFVEBzC^HtiHzzr_zY_CmO^_7tZ4@^_4$E3ow%WoaLFe(4liOA>PD>3e7mqX~J6 zKjwI87h3zymG=kCA_aJTU#B&96{$BaBfj4|nz;Kgx#xR7gLjTnJrGir!kc5l3eDx= zfGq9uTfeEz1dTaQQz~qyhOS146Sg>8BY8OTW^+W|m4Fq)>X@?npf0psTvXeoYb~r? zU5;vuNvx5*Z=kHHi4)YYgFvMT%P7Vr1l23XeQ#t5!Sz``D5?=hB|=MtKJ`>ci85DU za!#3QbIcAhtl4G=nd5!<*}?9;^MHQhVxUiPB!RZ|y#D61u;K!fXm~M}Y^EZ$ie7QU zP^;`{m8~o!1p@K%;GV*6rGOW9`+X4xxOkV(H&khRhs7D1HKM$w@Lbz+ChJuMk9sN> zmYz+I#B2J{s%L3tq4Z6Rq(0rC$}k{6m;u$!T&@0Od-GP0X)<>9c1lT#S=+zHAK%zP zu8Eu{ANnnW1vSX|dKNp#CF}|MI`B0C9!BJQ==Xm)#(#0ZTZ7Ubdt@zR2{jLVw|N!n z;%ng?a3N3raR=Gh)|vxaOq*7O*H9qk86J(pqiarKQ8bqfz}$C`!|Sg@xQ!hJ9Xg0M zKgUNX_0dhU5yUg9_jZsFAi|FZE@|d=g9v%18j7LBRT*fNJw^FJ++(kJ2|K(qmwrdR zN-|Hm)}K$m_&@2GxO>b@da;+xVobJ?-8{oVR@q+-Bh?UBCBWhsJVIQ5p4%~;z&4L} z_>%7(A>rh*z%nt5c`92~{Q*}I^Z~Yy?MULzKl1R(mjylq#*uobfrq~HBrsKAYUqH! z3%v8+zAeG1rKd4x;9~ZA=s;{T#ZN$CG(J8k%&!5sf!{KZ{XkDg7z=Pda&9IH%(1qEgco5-P6_yez7>a90-mElIowsg*m1>!vP1BsW5duC6Wqr|oc$vR9Uje|; z+Yp@g2Jbg0Dg`i8#GD!zNU9-jm97GVV?J|jcjj{e zE8+?2ZI0FHHX6Awbj$zi5$*oRZxch_DXZL)%2X@Wq=RlINk3qq4d{tdr%)l_i4cgP zm=s4uikhATL!tKn`9h*1(obu{@r}SdM(|K<5U^4$uc+{HAl^)Vv8I(@z#7of*5v?Qnlyr@_RegC`HZSTwwU-TjaPVK^D``yoD+z&u0&Z%a+JR{dMlC){s|c%|oh|IrdleLr zA|PNx#fCk`8jVRztkKv_#9m`BG3w9WqOnG!(O6;wDWagF^dh}?SlB)@_rB-%$9wP0 z?6TOAdj0TmXZFtQz3+YB^PcmZbDoDKqAU)D=o0(rfDZa3o$fPXo^!Sv4E|CEjli@>@J@h!u&*&Q`HrB ziGWRG)r-I~$uP;TO{MtU3wTe2uT$688PKc;a(-hxw!ut*ft)$GzJudTL3aDj7Gwnx zk>yww^ebfd{+Wf0`KxsG5_-5X>?elCI1t!{uuez=UlAMWAH+0TTU4ssMr$z|67^i| zhPBwxf+ti;z{o_Bm&$Hpv3m~1cv?op3218o1|1zmK(gpgW(n+qu!HejrIialGgQR7 zxerusVN6|%zLs%NPtg$4>f**$p3vGF(pFiEQeuQMRjSigt0Y~$TzrygA4w@lfSS

#A@#&nSmsAys^S{2kgO+?SuBzZ^yM0Y4cycB#zr*TFcae< zp6@#E)KU(7?OEP$TExtQUZMKMZyx9MfTy}+iVXo(ww58OMIoq_wf>Gpr+0 zW*&V@EMK(*ehGsiKq&PRENDgb}5)N)FZ2<{m56eqH<8tw0#n z3XoO4i3KqXN}ek9R4KC10BB`A+FNLCp_K})tcx| zA+zbpdeME4u{%En}A!F@uOljcjU%p0edQE@~XJ9h1c_nz8||NE9n z)SiQNeZH>urP~Z7Rgii8+_8;$`_Pk>Rp^WP$LqB`E>loeJ@QFK!y;xHVYDhstrFO{ z)782AS$t~?kvWY!KQp0gCMI_rixDHZh#_T!48 zbOEXX3Ekq)=(la!dnT84C#K_8%Q`IMsFqJtx29Hc#g1}&&xJZ^O&Tu`!qn#b7@xoQ zUnHrNb2(faj(APi?SF@iIc>J|c&4`=THjy$T6r)w2xy1L-Uv;UNRvPb#fvfpTMij+ z4G$%DTm;m37;HoWB$Q&A+iM3_KY9wbD+T=d!6oc?&`r{_*>_mO_3x)sRW--@!m&n4 zs{_eYo>WcQrGN33g`#^9lhvW8bugPElNXlOWNtz7}M%;ojkOpn`CSc1yq zYZ~i{4vVF@qELMV<#`}q_I&(AZ_*rkhmAQIk3ItV;>bw@&%=vLW^)1K&9=U!7WaQ9 zvlVSF>O$8*go#w}yfKWgxHjhb6k(N0&>U+vv>_^r>hCCPQM}k#Gg*`p@i7^YWNTD} zSC9}qr*~(pLJ(j>_bDx!gH$ZN zmCyc2P|q+MVS-VX8yop)9-a-eE_6(KvpJUv=Q1Sc;7MY@sKu&9H6)2;X)?*IiuS*CN<*9^Wo`ET$QyFrSPPv_dx%%UEq0M!~EqsUf zf6ir)Nee{}-{dqs#WL9O*&0{psRNH9dh57Hzh>;N8H?(E;YHrSk9FVc`uQ7niWnr$ zjCJ-33=R-mWI{ev<4@uolE3FNF6?f#?ap6wRIMr=FUs$)WF=>FHs^58CSMT0(sdS=xiyGK!!v$ z7E!SoY+$*D%(S;s#!7eYtxH9kw1Vq{_A0u8WJeg86i=Kt)cPTslvOe?31^_xQ$Y+k zFd&D8C&QSfb%1X#jH5L*_3<*^PjubJWky1+m8F-cU?+Ad zy|{%pV?};kC7*6U{z;|g_117_Go?>a=1ro3r51D?e@flny)i9gZDx z6f%igeXe#ourliH%{~Ok@HUue_jkf70K@<-pp+83%?}i?TA)8gON?KvD2%}Qvywk3dHGggUA`j4jgN7VM>HM9fUBAiP{dE00 zueAwHHoIqfBoDw5$8hOGv$%csHLu8o-jsWRfINrvHKKRO{-Cbddwb_t5zB#teS%%M4-#&U`^c}NKQ6D zqEzSl)=YD9#2LRqB~u(FxwP0h)LmA8qUDkSEu(lfqqHlTu*Au1Md!p^dB(;1g5aYB zSZ1OO6~jlmru)*b?koro`KX!+4Ns!OJ=bu4!`VDt{!4bDLhH&G)$FC&^oK_P_{it~ zB~ji?=de&IDkC6IX(-lj-XLlu@-gCS7xClpLAE~sL1lVLBKbRea0UUuI1*wv0Cb3*cC&A7!WfaKG}gYHU~G02r4C_vl1f? zInRhmY(61?)QVNsqmNwAa7nFmbKjN?$38zQw#<#|-HxAO0oGiYMKdU|;JTOtRZ2AE zYf(PdknzFSJyw*xFvWIRi&WiV)XaI1wNF9AUsmfepSDDK{W~q~O&%(LhaDyM+)mgJ zUKL` z&MWPZ!*}YW&kVUbIe3q=CY4rdzPRqWeh5B-+K|xmFk%pEGj6hGdXD3E7E@!k=yt7_ zA7-p_TC%YbqF^Em9F4yk2j*xP;)$Zxuv9IhOu*EKTGW%kOrorf~Ip z^!;KG<9B;oe*4-*@GH-;DQ#5`Nw|8X@)}SrZPxnfB@;cLgDe#LuKz>BEhzk#n(lyS zAtcSXL^Vs2z~L<9y>Iw@-B#|}o8j_1xh%azW zD3-CRga`>S7^8@U4nT_*w;1E3oiY;98s*Gk8_{OjD435*76U+WO1rTK7KK>GT6`Ol zXAH{`hJ{pbJ5DJ^D@WBGRIWl1q2e8R0o12YrHmw2!84u&WDi=SxKbRSk^L zLxd(+JSC!DGSpP8)~LtA62{$xaj}I`H@E%vW5X6eV$CL-;Wz+CcxfWBjx?}ZEK9{O z37^l+3TB+N&QCt~L}2wg`nv*}kEpD)~`Kw`_67&8@MNhD`GlOgnGwA1bfr3B3EK z!HX9}XP#TP2eIB4hPb-5U%vo@{>f8kx0JKWo`rj_#|tl|{}>grmU^>JlMfDPtT$cve|&hbj~AS$et;wkV937c zpiiuf-zTK+J5!ZLyKaT{Q~CG5Pn45Rd{y%wAm1-zZ^`G}(9+6U((9=%ZCYDj^TMfv z%fe;ie1TQfY5rkDMshvnZ}K8{a37!W*#>c%x-o#>e{yF}uC{$%exE%jJyu7uV%0R`-tMR9v2v$mM5-WD%E43PgPWp@)GI326n@+qguyzPgMIR#-*j=9V&B0 zifmu_-+x0>2t`owGJNkzqpT2^X_d+9F|(m%ZO;{yRql03y7|s&JRahzL)LKm`91mQ zrD|zES@fCa4m@6UrhHnj>KmV5-3DMvFCfnj7(Q4g zGD174(FK2d#_-i&b)U-$C~Q^=OMn+ogv%C%)lkyuiXBUrCKjx+R%fHyQL!yWX(mcj zga#tyN44;XSA+dVwj?R?pA+24<;IA2d=X;Su600(SV|>il`$+&7?yjmEUhf9xQunn zf#pEc`$Fb1Mot-yGNhO}S9FwuF&*@b`opL^de0YegfuG&%8~A{kl1Hee&1X zuU^4C4J@c5y>M2SdfrYmJ0_qtA+01qWAQ0cCEr>^Ow>MWGc?WH4L}`RyaM89y1SG# zp?D8n^$|>?y9>UH4m?eMwemH2W^%c*0bv&ZTd%{9q^nU2NlYr=H2^dL z8rGa^Uvo9xE*%SbUsMWAWi?ZS-$Bp=FaKoRa*90sI;ZI+{BfHfCy)>#1Gr6y!x*!wcdJ%cYfhKy~bW6w{ctMJ!4rULIqHa15h`)<&$iT9~Y3-ZmuJ$uUTSX zN&}B2)!jU+1oZv#a4smS&zW*O@a#AKjSV9Y-*E_Z21wU$KX0F3;8z}o&Ypvmu0Sbo zM76DjcKf=I5ECdj^!{ug$!~3#*KZ1ITCJjR3CP=M*_S_Jq_ii;0%Cl4hDdz%F{Tk%n|c?QA4?7 zHJ)eSodRWe$z_!Ma`5%0|Kh*u30HJ74P}*1>QiRFz!m&l|DCe{KfwThTd}_`5uPtr zd470LeedYW+h=8t-IR9o;meNr49 z9MW?*G;%)=q63xPe^JB7@9Y5O?+*kjQS%lKO2w$x^nr>Rs!8rZyYQkr3Hl9)(FT-BdoSz!YvXbB6S zJSF0xIHwCM3ajAwa;54(Ufl(l3QVf|>oZR%8QWxw4F=p#?&cC=10h zrV%Xr*TL}H*LId`9(qtL_wvOT%NhH%;tA{X_kw}u;w8zF1((~drpNN55^2QrJMFzG)>la?xpGEWL1S3Q@hK~ zJ*R3BQ1NqtfDAbpcBDQx)nl zGwt#IQ7uV5tZ=~@aOq&IPJNt7Pa$iPquFs{AAvbE-Q#mz64{m3KN|+H(_E|t8#)Z* zaz&0;e=WJ(BBtJid&^YhMQ@do9=o% zt$5`Y7*cSGzL@_TZ4j1gtEubs=CwCzyJuQEdK;Uyt-a!*dh<+TF4MMcmlA}L;02)C zDnsIw;cMLn%CP3^+vf2`A7}U*iR&B2eQ+U95KF1_GiPCMgXg?n&Rn zc&=9_-t}`uVO=$sW7e9BWn|~2doS7X3qQPT(e*O!n7_K3@7o8`as{?K#hTy5*A!^8 ziu$zn0$PdvnK6JEz<3kdu7K8IzI2<`iNj90P4G&jHS?tFqDj*4CdIpwGgA)#b&ps*@e)%uCoHKawg>Mk@+&W_` z#KK#LFJk13eYD5f`zW-dJ-=0|LqTFP-JkK2w1&X0drNa{a!gGJsAZLge5IB7U(UGy z)9|v#tX{FAC!Zd3d3c!#U;b&6${y$J{4=jWbakTuRBGF7qB6=stalqZ^ zEsc@u?uTYT0q7zDXiu*J%jJ|~Q=EIbN4IVvmtF#Y`BU9B;#=RCHU=rljPH$uksCh! zukz`!ZhqZN_e37&8bf~(syAvOTdboYPQn{?m44CUC$#RF_y!}2XB{*d67n%=^IG+F zc5-omRQRaQx;%4=SggP(Z5i+-dhVZJBHLIk(I$o_XG#C%&m;@iUY{-mxzOW)bAAW6Rrxdg~%#}6{xeu@F?G&!5M43Z@U<;6-64lM3 zJ>%y&j6!h=DK!c8>KoAnq|+8tmA1`qCe`IGf|-}Q&cF2y&~d-mR*Y)@?5^|x?6UBEXjLjA=z9v9ps5H2 z8F`qWp_pB44h?-w?BSS+<1j!XGM!Z@pO`$R%{$ko-XDz291B&q!Zr8(UJoko!6452 zp;+TaHgf>`J^@|N67B;UimD>R-hmUoAU|C|!@>kj(*aG=KJ~03l152mNg$d)qROXj z#{t06DyIR-cP@XJj@p3}loOB?pEAj#T&qcYl>`mfwM!O_JtsNylk0N4Okr$Kq~Z$n zfZxL}UO+BchaBt!6Hq?%RAz=8qVVB15e7u8|J_9Yx!=)p=&o=_kST*(b`%(C3CH zXY%BkUvtFkUA1|MY(54+au`({(rB^!A{;7kJ*q0~@)(8l*U&W-`iajDC=Cz_6htkS zFe9UFRJJYl;F#&twSi@1%dtuzhH4v-@`Ng5D7DHOV_8`huuwgg_UuU6vv4Z^4~wr#AV$jecyc?xywt6cA@z1vj*6ZgK(`14I|Gtqj7RyNBkRUd_Y5n zRh>om_Pg;9u3!fiK!8eO+Za<%)v;&H_$53!R;HY|j7Ga7o$sN3Xt_(3E=Ew#I3RAL z8Gx95STLbtLv=FUo`)YvwHt9tMT^ApzeFA%p52a;yDyy_9CtuZnRC(KnXvmyDyzQ~ znjEX}pC1gCZ4?Y(kT`+S_-J|f=Nxj%Y06vu8Tsrfa_EK2>d}sV7?wY^o9yn`((EGb@o?EoHph_r02wbbMVinqR4>;-x5`HxugM>@G z$WJiWRBMom=1R%Mf-w^5_-RHuUL(U0=kY8nOvsn{@WmcoSabK@*f~#~Wcv4LLs|Yh zg|TvL0)BJyQFMCwhhMI2#PJ4T9wL)b?RMH9>0I?Ve|@=$+<0+i+x%9^Ka0-*6{=0` za>yJvDF(b%wvB{9jme|YRH*A&8RF!SRS+>wzeAJ&C267DD08ggO9Cd;TV1fEpM9uu z-+Ru`8wFrbmc9JBtUU=$ipM(|a!n3+^Q(XTn}45sQdB0lb!B5zfoBjo9WA<)LTSR$ z)gC7pp_!MJag!gjKyv1CwliL9=taf=pHq?su}X-+6R4Ds&l5@BIj;lbZ$Fg)JpM;$ z76ZxI=mnios(}N)ARN6L{tvv;javvL&R?-@4AnY8RmfEtj=iN2b&i*Xe1RrL=<6w`dT?Q7i0!6J&a0rS#n#*|hw<&M*0RmMC_BwQWj&Ia@2;4yz=S=ihiqxX9W)NB~mnD%p*j zMRKH}W32@Vos4@y=+RYtn$&|{dK;q}7vz6l@@HG|M?v+WyIA=4P9X7Ez2v6nbs>+kP}DkK6^`o#MuLbskNOp>0CR*X%-dd^x8)DMsM{^=@&6QFKTW;MDUyclLxMl%LzA53i>Sm(;opDO#X>kS(5LF!Vk~a6 ziyM8cM#Vs2!jMorR%^gJMIrC6xt8Usid5rxBJ(!R_-`~P&x`)Q+DBF)dU_I0uyDdN z=rGU)0bh$pcY%I!hkGOyBsiURYYfJZHhhax{Bw1l2uJU5ayRIIO2tBgzindrjSrD1%S$H&cV;VPvu3>M*@jT-=O z)F@8`8Wo{yBMqQW=b_~{!Yn`v>rF{WRR&;l-PUvX>M9<6t~AR?nazSRvc!i#X~8x%0#b<|Jt>k7BBw$ z+^_{#bM(yXHhM42#tW?@IaYg1b1iew7__Xr(>t#-woj zU!-mXa?3lO($n4Ik5*IZkm=2=(p7|(z9FHm5--CAAV0zaWa!6iMC@s!><$?ZSFI(q zif5Hdl!?ImQp6m4&z#hQC@Tr%sqi(<;5j*s=Qi57Y(xX#{2Gf3Ob_<(V-qBV*LjN{YI|Dg(4o=pT9<7}lqE z^INYd9wFy)Wj@UO)iKbx`!70PpXL<(C#PEeUi*T}ph z!ZYipGCR-b{NJ=!4dEmHqW9dPGUt(0vQxlpFJLIjWKqh*5hOSqAyOL70dlhsB_~je z(l^@#vBmd^093(ulRJ}svL-W*Ax>blDZ*YV99CMuj;9WOtN?&U7gBKi8f{R&R2zNQ zxObDr_uqB_|H=F`sxQq&=mvBYAx|SPPSthgNiJTnAsnGr%}Ug~qc!$FXKck7#B*XE zLUwagQRakJhE{8XF_nWWsuhKa?d04G;ML27;SK!O-ssu2ORAB63E1^dgP`Xm zLBZ$uthnqk*jKoD8C7lTGs{c!9x%;#qQ4f8N%o(F77aqe zP@R-`3=DVa> zW)YQJXY}lUR16U3) zMjjQ{XYp-dn`C-)qj_ju%1h>H1$bXjl-fDIaLk21I@eD;MVZ@Ja z5U|#@PGS(;;0g}p+Acyu_9TFoskifusDUm%)O`))4l8YYN}Dc#zF!&sdknWXTFuq-+bg|hY;xl}rLQuj7jn-jWqfwe3B2+C ze{|ibK62zfbF{fY-u2Y;3mIrVj#i}$E(_)=|BNftA?DrRutHFVpFa)+GO>L`>=DgJ zG1;)dM4@b;mL;C$;~>q4sYxv2Rl?lDxiBIHi9LsnJ)1W=BT&|G$$IgcAc%T2U5%{r zLrp>10k<*gs{}R;jj?o5!84#5qM>65QxnxrV_c_k^o54)M`oyVhFxm)7id&DC{fLO zygRA!AhdK04ErxgrAmO&lE&!C2h)D}+tTDSwBgj#p;3v1pY2JI2=vP1-r%Y?j?vAb zN~`Br0Rui3MjTvU3z8qOX9HxxtG%SzK68{i@DbVvmH}AWiQtRdU`=Lo*Ke=?&#mG` zTtC0M`fCkC2l|<~gTr&xfL5^)t=CeNVVcjo;apbnDq(KcKqSKk^s_ZzZSqC)MgMYM zIq3`b8tV++@T*C+uHuVC$g^r0ZygJsPmarFU0&6S%~L!v*uwdCylo0^QY6P0rJ#e-q%ll^PasR5pWL3QICvd z=l^XcH`A#VUp#aMy=Js}V|R8iwp03Ox{tB$ffGLk>j00oRl)$m;fI z#aN3Kg@ljid6{Bjbxa?Kv3L@)M3rH_$oqRO-e+a_gj@WZ17N(#j>-b1uzCjYu811F z|1USnMK7&USq8feZcs42Y3Xh$;aFqn1{A3}GEoKfBtlhlP}sgczxYFnhW+Yjc-u*0@Hmmh+D@OWFwDnkA z!I}Y#kI7AA10o)lfO(>f@P&^{uV9{{{0+ElGl*C>>0fv7#+!`T{}?%N*do35_Wm-p z%Ssxq8m>>Dw;uonH*-js;2;sY8KI##N?|L4iR-M@q1&?QhjR;q39>{ZDh5LUn2ccv zHDIAtUiXuHcGOn`SHJr1NZVtrFtx!OlyMCAe$`PLmCx6U_uG8#>!}Oj=(mw(bI>bM zp1do+QAL>AJ@h!rgTCMz&@vu&j^Z(8dkv|bD=S^&~Xj(~oD|_0$IEXj$0Jll4+P!0umCfN)ke5bEqTJG3 zl|zlv+w%ymWVV$%B5K092IrbhAOBl5fDvB6LtFk~-e30LmkyrkSRcBv{Fl?aO zgNN(VkN1P-OE>wBwP`T`RhG6XBlKSe(j1xow~nR^*cUE@>R(@>To|OADboympfJK( zR*IrxU2U}puCR5(wHw=yx@NH=*2TZ#IXKk`P((c#ksIsd(J^f~s60vk^ZL+Kc#Qhx zSL&yGi{_nHpr1{E=cjKzj@RVf(JQY<+h0Q7k}>pC!=d7_i@3TpwGL=^%~CPiubEJi z=zTU+SSHz!fvCL~BZ%=ZQN6zhR9l!P%G(VCM)Y04stW}@5R`Y%qn`D&}7Xe)6^gyeLXMsp>Xy@x188l_G%7?ToFdPnmpnm-c7Q>Cg*SIZ|2EuXEtmK6ZJ zfp84^sVF1Px=$88c`Yd_^oecO07MT}afJecpoQ?SbCAz_!{5&+Q}Q2_+vncO3$4p_ zia`BqD3E$|4n6h@gxxT-2J+&Em7D4!dMHG+OSy(2=NyUHbda2!Yb{Q(j0k2l zm7~HS8*he2Fj1w2uZA*Us=!FUfX}Nsu_pKhK`~0(MKHacPy;ke!U1_OY;`wiHVtrk z(1{HUt12*hKiGQ&P{6)lPvDcTI|J#gw6!Y#Jp_&(;#Mz=2s?fsDIv#g_MiZSO8ea>n-^xf4{b$R^jvCw%6K`? zDd&kbKOOmMCt6qMv7dpX1$Hw+k%F}@dt^=abNY?QbW~YV=SeoRp(qh}Y79o8#K0II z-Z6;=V_W{_j#5?R%6RbuB$Rc)B*6a&ShndS)=i!T$lYiI%@T<$6Qxz|7Crh(?(cRx z7d000uP2cxpmkvAX@z|e`g%fr3~2$)ZNH3o2IH76!@8=L&@*_E;;Jh*_9F6;ZN&qS zoLw!udrMt*B4-DzLRn^o30OwgPx@2W+z?a%oT>1n0B;&b{?bx^EYkO~hWhJs50_`F zlH?EgKqw*Bn%%Zx`<9<3Txn@Xl9 zMMMy5zy^+|0>@^Z6lI|*qkWGr8&)RfbZRuJbks$AXy)ssM%0^u-UA>Z+pqzk)~>O^ zFfSM&c&9+sX-eM9;Ge+;~}_#3Q2FgG`j|Q=? zXQC3#h=oN0OK8D*F18glXjHmsR3jGG$TitsP?XiHi(=pmHCt5NE+~}vRuq$~NPe_MZD*K^wiFZG_we<%G*j?Np7q#oPsvr=2c zBwwqYdFP!)^8QoRJiBfH4DBe*4xF!f!#~%>!vgl6PTuFsX+a_VJ>{1Ooy6da5MrHc zuQ@^tD54=jsF4A1OgUn6Cc<_Dka2~vZecjG)`+$}bj?^Hj&HD1l~tn54l5WQjAat< zWd)8^VI^&)g)G+f!as$29AOM?v|OJ0)&;ZciTE>jp=ao`pBnm!PqA8x)R2fb*bG1y zyZgD!%5}K^wZo#^i|{l9m>L8LstF}QijX0iW@xH{Sxn5UYW3wbUAl5d_dORJiS&C< z%Kj_A=rdlLwHePEyGDQAWAm>|*&?JL=FNw3W8i`S+6)S0um9B3 z-Csz_gaYKTQNDX-?|}TGdNt^9|0Y?BP=?S4Xs(uenLc*M`f73Lt%}x&6WLZk!0!VR znw%Kc2^50K=D}6mVlo1aF|-uNgTGXjnPDEY?wG(LNl~IuRd@$gDWN)qRAMnu1ZmHO z8ub#G;zIJ8+)1H&-1g%6elj z{#&ynCiWcMXVcaJ_;WFgZC8+ZXU1jeN~qx6WykW+#V5<9d+g7>y`VENBZ=NHL3B%~ zOWPtQxe8pR@Xig$aW}d?>x)4effWP)Q7Bcs{|USdVb?P}S=c>nZ47(bkb$An(K8ea z_|`^j!@g4Ukr zBuo0dOB+0NK`1Iy`lpV9>TJbXLH0FN_1ee2? zoM=rYs`+3&Pt6tmW@|sJEN!8;dR-O1E&C?Jz zg`?L%t7~rI$)nze0b|G^U1fm^9WY3Y?cZve`eJ)|LVppuD>OGAMUfVPX534uNlPx| zqz7ve9Mxurm1vS_&UbAsKwy+3cT`uBsR_t3;YRzc7n5sBHia1Z2^#J3PbWAK83nBaG?AKNh1B-HopD+3{o0>f&u^C+VjS5* zo@nRKk)J1XZMnT4U{y(DnQP!9PkGZ=h6Z0TlSip$xX9jWWZmD+;H?+oyuY^r`Iuzh z8X%3BT4|&$Xkl&EHmX*0-%oPnKSCm0LPJ|XJKtj$W9X|wXH^=C1DI^6gkl}xNW?a5 zBOgF=7lVz}WF+GzXUdPamfgShedGe2QGPJnO}8P#Q43J04Ww$V@QIpfyto88H-y*R zm_6s(GLt4sU*vi#HuH-R6@!o9Ye=;i<{HZsF-)oFF}p*+ikU;|SFQW7)XpDzoZNWO z8`5bedi_!8XNAa~6J{uM`PO;4v1PrsdJN#FSVOgqNb+3Lz^dlAQ?@c-O`*pM@mQ$P z71vu<-xE9)LRFU`$N`n8(Q)W<;I1D$W{kGjttEk2ml4~bVUzDT&+ACOulH6R?LN6* zE_L@SWIOg^LuDb98oCjJVnUaxs5Z(16EeprQ}ZlSyux}*PTF&avWNDX7D5@1{_#1P z)MYA-K@a<=t1{yp_9UUu#^_tn@@%N zlF1&v&t4e%h@pu#4Hn6ZliuK$$$M>s`~U2K!wZk_ z7BqghLA@fHX~@nP`r^^cLQ8dAdE~%7swSe;4>PfUoTJ`mItn)<4?v?L9uOqRdIjPM zm7Za~fzNHoOvy{k?~uq_J#1A)b;}!6n}B@4)!LuiS!s9WdDBADRUh!1_mTFuJ#8B& z_vh3P_A-aJTp{g1kKt@PhwDJvZ#Mv2%yHCV^nYNH95H`K4msdtU8t9sPQU0z@w6Tq zoLjE_E_=R4e`u>~^9xH0QeDZ@U9Hg7hO`w!QxOW(6|6X%CyM{U)y0R3`riNo*7gi) zR~zQWvb90CoO5azm|Re7JzBJ%00{i1_`fb*fg0Dkf#2806*ffcUi*Hi2|`LPvy*7{ zS%j9r8cMJ%G0HsOV_N-uCM>;}^nB z8@@dJU*^-r6SS()8Vdg05l$~fIwY%r371^Mq!)_Wq1>`hsPwc#YcVuLC?r5Ei09+Q zWD=5Ll&^b12pt!JF-2y1FD-nz=DzfH5@ zn~X&5`(b_Vg527yAcV9hR3;4TRG22pn8Y$BmfTNy1#yK?A&-(qmU--b)+8D6?tV&r zxWFrxDWn-dQdb)2_dI;f4zw&>M>S}dWv#U0z~TDg>L!Ag=+>}(ZaW45SkeOC8*reU z^4b?b0}lNVR(cO}SsT?p{@1je+L#>@V|eStU!ZTVfM2wLse9U)56xXTuIJ}(R8;Dy z>S}hjhF+3jCp;P(rGZrk0O~jFl;4C}*NJG=LX+#tv26yLoSOjYThEAkIHuo9V2xN7 zE6hyhG0r4elvhSs<29s8YPh|noO{uQlD_v#ZvFBD*k?9OO7oN!Xa`C;i~X@h?%b}l zrG8?q+yZ*j|BmFpXFSDjjZ36I=Jz=u=PM!t|97t?n}!=MJ1JxETY76IPH^R6a{A_% zEjyJ{#^4-|R&(Knq(CZb5o-{qbM08(Af_$=)|CLY!TCPlTwyx<~5`fXXDLbu`WtJ|1gCBbKL!0DKvxjQkjzJ5*V+w z7$XU7n9Cr%ao@najlN$vp*f6Dg+5D??!t81-mF+=Rq)j@Auu4yF6S5`Vt~Ng>E9Mk z?B_MC1~wl8uq;D#&3*653jfOe>op3SrD_1)Hd4|$!i_W1^qs2}HfPGwc{{C>&=Ywq z#c-^`QdPRGM~4_1HD(}Ek`d=wqfOo_C6q*IFFP*r1X3P)twj8eq_m}T+i5b~`@B>4 zjg};J{~eP}7S5cQ{Dhr^bR)^g$1f-FURN2kp}Ii-1Ui?hJlA}c&TdeJG2=0$%76>m zX)QY%A_o0g#$LUZF!T7Ns@7Ela0H}N_Yj7+$Ora3z}k)_TvY5*k-u~CwJYV%D_-&Nx`Us%VyFE|5t-+y)>|w2?CaDGooS7?*@=fjr%s=3&E$hawdd;sM6Q6_#mW#0t9<_6WS< z41>lnRBstuT!Vk@iA0yam+<_mCRcL+M_O+B`Z3%WcCz^zs9iEh-(!RFAD+<_k6oZZ z5XN!o^ol##I|ThUqA7GNc0!jJmWrht$0Fxw!LZm^76}wp2@^g71xV0@X;m`I_2nuF zq}1m*sB+dwqjQU8Z=9SY_A)ew^N*+Lq-;A0#gysppdQR7-`eC!y}cBuqj! z$!C-WhBaao!#FSk>=9wN5r!Kq6Ka@jU&izcm*Yl&jS4G(ORoQ@T=?)g`fWCFhu#9f zH|5T%(pEiy!<$EVga_nPAGt@vpLx*nH%3u@JGxj(i^nCHI!(_U-li9xSXtKkTMJ$( zqQ2g9P0}8<$_(9MNRL{2jitvxiwp6bP&9@*ghJ$E*E#W=^FLM`YsX2ycsQkrLxH4p zsB7Fn9s`ys$1p<^AU|fX$s6@XO7;=^o zaZDDV^jHg}%h%4mp6xHf@|D1Up<_Lq`wTp}rwNhCs^^ne@1NaA-QF2${eUJD zaEz}k!LrObjsv=kq27=&6>H+^t8=&vZ;+ebqhUPnPGj#OPTbqLMftFv7L^!3ZwTUj zE^|BfQnsFC8mB8NMh$6$c9oV)Sv_zyy(%)mmsI(Y2%pt%Dc;{8{!1sAm)T{XYu{E= zF3^Bdug=sNXz|2#3baK+H-=*oI)P?Yib#?eOPk)}gkhM_n@Nu0qEfZX4^VyMKYAq~ ziD|wxa+MQaz$OGL#wDddbwuJQVc6vb460?qS%xEFmqv`q3?(ltOq<5W8Qb1CQ(I@s z!++>^JQSx4bl&Km)C#4~+x(q8vF$iH@0#b;?l=KjpJI6YGCHeTUG)Htgp93xilH&| zY!5ohlZ3#g4d{Dz{6+S;F1dHv`R@8}-7HQ+^X_^$uVcTEBk?A%IJ7M2AYqpMHm2b_v?N3BubqsK*^ta$o6Z zP5}*>UyZ_6M9xWh3Ktf`U9@@u-8IlE0d4AN*IMdaz*0O4SS(7xxtP_~Dg{+M6->hE zKgR&*>r;+Mg#gJW2Rn`M1tQ}yg=5r}8Bxc$z=Zlt1OcOLV)FGZZ)#g+Xrhh*U=io? z}{7^k$q7SKXej_Uo1<9KYHxol5j?*b*y2pngl8& zk^~|iy673$cfp~oq@D9v94an9&g0->s;XG^0FI_S{&@U%_3A@$CMrer1HNZImc<8Z z4&lN+hdCz14mUzuGljBH2pch4G{|Hfi)O)!P%>rpB|JcfPOKeX0f``N37P}Hxx-%5-*sFEG_ZPmu!-CM9m)LkKP;phIDsM_2yb`%<-4eO#@vFG}1{hc1lC4KE zDpK_Gz4G%dn6JH5JxHojm7|`PP`)g>d`vU}<(#R=21WGI>!hzW$TIf7dH)|XB(ZkH z?>*t{*J8BHJx+1F`2h(iI@Ke;dIGcV3snQ~R+aw&kB}hKFRoI<00000NkvXXu0mjf Dm&$Bo literal 0 HcmV?d00001 From 3614a977f85b272fc2522722b483dc975b3cb0f4 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Fri, 15 Nov 2019 16:38:41 +0000 Subject: [PATCH 16/42] fix: minidlna.conf file permissions after editing Reviewed-by: James Valleroy --- actions/minidlna | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/actions/minidlna b/actions/minidlna index 544fa4c7f..90424f867 100755 --- a/actions/minidlna +++ b/actions/minidlna @@ -21,7 +21,7 @@ Configuration actions for the minidlna server. import argparse from tempfile import mkstemp from shutil import move -from os import fdopen, remove +from os import fdopen, remove, chmod, stat import augeas @@ -82,6 +82,7 @@ def replace_in_config_file(file_path, pattern, subst): Create a temporary minidlna.conf file, replace the media dir config, remove original one and move the temporary file. + Preserve permissions as the original file. """ temp_file, temp_file_path = mkstemp() with fdopen(temp_file, 'w') as new_file: @@ -89,8 +90,10 @@ def replace_in_config_file(file_path, pattern, subst): for line in old_file: new_file.write(line.replace(pattern, subst)) + old_st_mode = stat(file_path).st_mode remove(file_path) move(temp_file_path, file_path) + chmod(file_path, old_st_mode) def main(): From 31c35e961c8aa4b9820765a3dbb5d2b0c6ac046d Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 3 Dec 2019 16:31:23 +0000 Subject: [PATCH 17/42] update minidlna svg Reviewed-by: James Valleroy --- static/themes/default/icons/minidlna.svg | Bin 49175 -> 2064 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/themes/default/icons/minidlna.svg b/static/themes/default/icons/minidlna.svg index 7ae6aaed4109190142d06a5d63d838a555dd8a72..31de727d969bc10b6417aedcbce275473d09ff1c 100644 GIT binary patch literal 2064 zcmcJQ-ESL36vf~7uedBPRO)1RX7&@st!NS-!|9XCB)=6mq zRXh;Ip09h)J@?!@*DINkWq1Yapv%FPaZ%NK>PA!IWBVoD$eJu;JMk){s9z_QqF`ttd`>qS=7}D zoBZ94x!nw_>zi?wf3|tQ8V+x^53{_q(mvVSlM!flyJ0`D&jpUSA`@UbV}=y zO-rdKJB^WjM*t@#l?SaxPa;FxiBE$S^+{tTV_Zd-Jsq*CSOo&IB3jy1vd;IJ;|S`K zYZih&r&gwvbVg-U8H9XZ48S!!x?wvC@xp2}Lk!MP;FhniMe* zrRt_AeIyEa2;)M?yyV3IX`dmJ{HG?8IbblR#l#r=y5Igee z2^9sQ&QgnT7qmrwx(#TY8a9?$-QaFeOLqcZY^09Dnd<_^9sa{gY6bAZT z%p8UErIMVoiQE(tXyH?N8iR|ZUS5!lTro`Dt^Pm`niFFY1*oQUaOI7m@gc#LT0;jo z$w9v@bhjok9Zjm;`gy15F$?NMOu6sG=~50F9$y6d6U~(u7IX?~p+QaQx z!&K~kA%Gr?QV#}CAN*Bi^5DiHTkJCRIb@*Lq+)Y3m~&GUkKssDy_n2krpJKd=~_{G uEu|h^quZ^@NJl~{8=>&gF!d6Xf6YeE^B1zg7p(s%S8>gcfPO+>Wq$&NPK#}kVMbSIY7uA+uejo>mqM|6JYum|His;Fc(47_ce!30pfqvos z3|Hjl4aK6UbVK?3OZ&@%e?D2<#s zdBS((ocm7GB|ZK?(d0W>_UIGP^GI}o;lua$kYQuzaLW?++S+>b#1oNQZ$(vGeEY)M z%vIRRuhHnagLw%@GKc5xK3u-L^l^Rs#&Mxbuu_C7y?rh6;eVj?GvS^K6rO^sK7h(3 zocr621$%o=~5En<4cAzP181$HpY+Jww^~!p-7zyD$Xbt zL(F8TFha4!Fo0M^vF@`}zTgxnCISPTuIItZvUN>YoclQc<5 zkuFNblBE39dee~Zy9?==$C7T*TT0!QhMneUQw5&>NqGM;4$w z@1DM}8hTU|6hJ`%Y|V<`JLBQSz39JTm|Vuk{J7)-wME~TOylGHvc9Vx_}IB-#ZX8L zK~J5B(g#q)g4})gPQ3I+Z&_V6S3Z!BBvV=Cw<%iP*7`wZ1}bfac0dJ&DoHQNO9Jq%araym3Pbnh;7t~= zKfM!h*^-zHt4zxjjNY`Nqf)*CWfHI}w*nUxj%`5!Y>g|U-~p`d#M;iU5Kr$&+0Exj z%`YC62j=)(@=~?FvyU=jSF|N7mbgedYMFNT5_Abtv!a2w(fXG|OU9-gopq{~~ z#j0S%AfBSCq!p4PG>DQ^OG*q$tJGpxYn0`hW=S%|lG24Nt9yjxMj!3nD0N5vmZWz) z75}_feG71-!0BY@ps~WSEhvDkH4Ip~q9eck{TUoFdXel`evwjBiyXS!M$hej9VIo; zsllg%2VFg%4nSpKsZdKB&(KDdN;Sk0C#NVz1WyGcHpChYkRiasIE2v&Z79ED4B`o5 z6&qLr0b|AeExP%iqX1OJp$-PbX@D?9v4}c_kOk@_cZ~|z(80H=;bj^E3v~ok8%wn@ zREtlwwN$IJDh4Y`ida797gejuWJR-my&3lI2orun_ENQQdJ78R>k?d)<}&cU!Y=Zq zFZ|qHd`$=wm$Eiy^KSYXhtw!wal? zFB7`y))JtIdg0|-th%g&igA`dlzyv<8iSD#Ud&#u357QgRc}cFM1Z>}Vw~`c3aaX0 zgK*1K0a5pQ4HZlHVgaz?{_c4gs{|ULM#1wiY9O%Gsj}2qJ`4W1 z&g+(L81iE>Z`#&B^$|yHVXhxUxM7l2kD!FIn zI-Y$2UjA_l((*6hNJw;iomAZpqPO+*sIHG;iHTC?E4^c749zsMgLrH&9%ZUzR8e)7 z5+fKB38O#|U_}ul2nJM~GoA^so`+{Zti_7w1l*}mG1|-m|k`OUqJVY(1CD2gw zwdeul!T@!^flCS?Sq0#J?Ua*~7tLLJo?dmKgJ7_s0ujWx@WCmy@a@#11_C^mi!w`K z8iqM|tZ1mAfmNi~nT&TTHV}}Xjlkaj9z{l8-I+@@OB0t;9UD>7P;>vJRP+_}M{s}ceE?{rNSlNTfe+Rc4thZWw6M;+m-4bY zIq234<#*4FRsP?7jGOu?hrKtNT9VxHvufG?`2+cR%?c*+arR~1PQx?~r8pB%o@u1A z!P3>HZFhWnAXEu-M(CgrQzZ}~6GqBuktQM-$%;l27g^@WTbD3Wk-X1S*=UPiK>lZimL3i5rsP6|>_^B(x*_-c@Ow!JPSO;A(8z0XKmxu(1xkByp+^rf zboGTDJY|(FXK~}9^$W|!#+GW}*L2CG8VG{qnLc_Zpqh}E#vjJWL6c=}r|q>J^WdZN z;U8zqBW-Fq8uZfhV1CtpoP2P1@g6oBIHZyPa}dWDsJuc5@a;wL7j+kUF5;)aBQK8O zqGX&)Pklh!tgfP)!s1W@FL}L4p8mKow$7)hZZ+*p5nT|v2bLbz(lbzciJ?*qo)O2l zu>lz@i0}4X^uMvct-$+I)Pj0~@dPqKPGN-S)C=K|j4I2p%#Io6rIe*&Sc+w35K!y4 zBb_|6B2cM8mmCCLU*SD=WJKyCnY;o<_Heu3uL$-UtT^9qtc;`e9ibEn@YlhZ!e#xpqv+T`=Zd;SmQK6Tx^VtQ#nZ({TZ zdZ|*Oph1AD1!FMA$6!Fy1Y!Y4#z8Cv70?WYRUpVPzk7#KaCMe2p zxmhkOzC>v#D1g>=1{Jg#?poDXeza(?&RY8)Gh^>sJ-I6M1^rVY`PQ;P>sVCMo%!p3MqU1A-Sq>c;#wFp4cb2mJlaEHA^x0B3~G2v zN}nC5?_S=i)$D!Y07h%3LjMoAkX_8JI4cC;JxqyNNhk5>tV&;jJ_foOXdhVGiccJe zv}ecxdZAl^MyQ-`5Y;gLmAsT$VL1g5ViK8f-@?7jT7F!XM68m7?j7;S0LC~SUT>AP zD62$S0NbtnWl)3!{{AmGgl0t6{*vSZe0!vpBI(UW>0n}pEplTgkP6SaehaW{` zn=pSK0bmY1E4cqnl|bOc-ozZ4(uR*k5H)W9OkUPb)kSS;oFZ`fPsBRnl8Q&2D60_W zitusV%BRUh=M~8wYf|>uR1hhGWerG|Vqj$__}ea8^PSgO->re31qIOBtWaM>=C}vH zqBLH~Fo9ha`eEp3lyZfbb(>~9!5HIm@*#>&7{_KAa-K``5h&IIF@t9{`~1S*=kI@H z^$jL0{k29QdTiAxTI1Y*qD+Ek@HEUKL?>D;Dkhtvti!NIl*N+dqae*++C_U8D7K5)g zOx`(Si-caO20`xN8V?h4=fTlm1r2lFg7|`G!RB-EzXbqZ2%zQCm*H)Y=Fg!8?xf3a z=BUXwFQu7ZsHl=-3ya#d0cV^Dw6ZSAx8`D_Z?N9H;OT zU`(E#==?`R%^F)CSm~-(28gx0;4#GWXbbr2Y=Ko*661v5#q(-y&hm(H?6#1itNF+_ z&T=7OY}nT0+YtX}JsI8jM1>4TBrjgim**y@FRV8Zam>Xq=FgM!P{>XA-0;;_uxhcP zSK#Uu@?_Fxuqvn+JOf6Qz$&Q#mLhy?V5%tdI*nrG!hK1C!a!i=0?^)QoApR-d0v>< zTza;B@!95yKvyeVop&GXdO(Y%D2}cvE|!vpwAf?@I7&w{UX%?oC&+NfBwt>AEaR_R zY1@insEF=mjP8V?6i2aD9NkZ|_d2vfp}U$*Rpq&{Ht%dmzH+cxSTKiZZ}aY>L=0gk zu*Ov$x}1LKwu}4zkeBs{GI?kg>CY()AQm#i9WOVh~^O zMZt!VfsuTNBKr!7D9)0L5;USghkXu2^mCOKMqEjBpmfrJ10=)FNyFQ(&tk$$ukjh& zlce-)6i?52@&tC>^)>M`W9Y~~bOs|;N1kX{UZNce3ScYn0K|C#3i1x

jLlJ$4rB zt6mXv!eQ+7{7VWchI21h51#0ie#fr}UQ2H$WJXcMAcdZ)RD{+jlW#}zSZMhk?&rdH z&4IoA$5}4_w-8*4ss+J?ML}L{9u^y^=WMq|9)oHwd@|0Wi$2oy!Z=1>8N6oFB&CR@|sN+8419U~Z% z0|3>4iJ;U-u|(|rkQ8JDL=+on)>{xUjwhhnght%-dRtb|MueCRs8^V6JSJ<3Phy4z z+JTzaP9-@?pu>qT%lC$#&Jl0_O~3!tMO5=fK>=(nIDjg$3iMv%VE7CoerNP&kBa&I zB-$ooY_Bjj*=}7)SmQmr}K1mc@u^_Bo%U0781Ph{?kwg7EVUAk<=+A(nTgh)+qg zq;che4cvA-vGi%Wz6%_=W-ob_iQ9a|(6<5uC;>Kr{6W#@)ZJM?6DRmZ{$zT_4a2bP zVwK)vXlERntZGBVxq0zdLHsw_dT1`N5ds4BvI##4WA~_#hmgK&5X8Fjiw$CF#B~rV z2Fg+QY;_qH8`fRhtk>Xr6k;SNd39x)($I5$lc<48^mmH^$`DGh6#GK^ zm}EN1P2Pu{>F}9cBCf;n_P~@v2(U#F=1scFP?awy&i7BLN_@QCvZ}g7Fw_bo1qK6^ zj*8d(VLwi)o6NwK_ujJ;K*Fr3PdzyAzDPBL4?JkOo?TfSe{`1 zZhxlk$q&Q5_#1FSK>>V&3IHlGvfpdge`N{-(#jqPJEL^7NdW;YOsTR|V3se;5@m6!fpw`g8#GRT($~Tvb?|8nnK%JIvx=h9Qc4o#l%)+74UKg0p}%+xB1SJ2N^L;ex=KP3 z2S#cW;IL%{Kvuw`tUyHQlI(X7&6}GLlE18h^^#&Xme~r^+?PDhT)lsIu{YJL6ilgcstV=o0z^a zy%6A2;1CwFm>$p!U{Db_4Pn`E7ESy)J=dM0NEcvv0Rz~ybw1kT&vcoc5q@{6%IZ$2 zKqUO7*OYWh&8y!{VNZpDSjxl09fUWtNv}K&Au6F+XWUkX21N7rvRk29edr$N>hQB( zbzZ(6frKhGs>}zbtL5W#l37*7)QsGY$z=nofUAr_JHW4wBUuPiMmStJ4fqtHMlzW{Z zlq2*fMzQhJMk@|lA8yTJsnY2UrpF`IB>CcI;PZH%d}M5Owh*S_vx`=9cN(` zU_&1$`2ix=v3AfqVvW@fpYGnG5|WJzd2%6O-s2DT=M0m(0C?erm^o!?rea-McQ7&b zCB_hhN>#kTqMiXO7y<%O6c10r??;4NNRy(ZCLthsl;rH+bK!;Hl;wIXQv%ELmED=1 z?oR!I`(dYu@)?i`U%i9QWLh=Yb_1BL(05_68CNCLdD!D)^#uj62_UoFb@J1!z2+FM z`cn_&@LOTRDW<5tevo(^p@uybiUQ4X^i8f1CwGtvO*onhpN;wyc;Q@ukh-gcO**nj zdEQtt6_Q3-o@wOKiZ$&&9JBPOTCG`cFI)VS4tgIbf?uEgkY0E1DLkaY!ulcs^qSJf zucQDJ%gE`%@e|;})9dAiF=xwTqaN{>#wl%tT@dzHVW@>7qlocc6P6JF(ZFE5$f7s1 z^8b|raM!6J-yu!FB2ixQEN_e+!J1bOBoN8#i>?W|;|9xJVVWxM zr6uomEhvC5TZ`^KSi0B$9J%O7J#uuJJa>%O&eNJ*CZ>7l)q~O@Q-i!C~oC~5SEdt1!mCW^8I6r+br!6^UN@#_8S99S9&M?~5YASKFj0zOj9!~sV!>7$_ps&M0H zRWkIvJ88S~LUzCELhZ~YtUmlHu-&+>Y&=)|3c*KZ=dXrW04(4C9>(1KflL`;WG6jV zKRC9#RvjR${P_;>>&jS>S=(2N*wYH55W0srMPR|kLc&m#DUi+Ex2yt)x%l`*;R!7Az7Q}m=^i}cCckqcJA!adG{vMS~0R}~b%m*4z4 z20vI9pI1v~YuU+H4i@MeSYmk2<+o`v;>agz!;x9W)#!UhUEEse!`IBa)?B-?uuM7P z+)FsUN35dZOu^+IykpY5w&9AhnaUyh(4|jH-@OCo9qQ}FsGLT?0iZ_+6y5QtR1fN- z{SMuOcR|`lCBU1xY84W|iD`H|{hsvo>*TEX{(5o>4$YvGO5ACFdNgwC7`oKQI1ph! zD|BZv&_xXtt5E}(fHX>53%h45M=xE* z@V$!hg)5Zy@90>L)5)u!g!emMNwng-m&O}^=(o4DkbOPc8;OIKiN-ft7T zF~AyjLl|LPBZq`5CUfF#!?}*G9~U-1*B=#%{5RLtnw)^FA`sLFo-wZ7c3@ErNE%pX zJSJG>t#nYnV9D*Z>Gw~)TV9vZjG8<~KYC;wcmC@c`f$8nS!<+i?U52=82{dTA~&9U z4X+&xeSU)`l3(p&uR0z44BYd>Ir4VNY&za}5WAX5+VjPKGx7l#KNmUvXV8DD>cn>m zfK}YU>%Kt|4gmUkU{rG0$3|vBvO`-S7vq2K;4_gdIGU|5u~PsWzghy+54MF?2UVLX}LE*3+o$>*3tbn0_ z0kjAL=06S_or+b&X2{qKD?H^*KgP>`ocZg{CliUq_P}gW_HFkECJem?-uMt*+!p#= zCnS$!uUCJjZyxZB9D?YJA))08cTM4CqjZ^D3VzGt4e&SW+mfSlDQ z?(Zh7IoV(>lLC0d!pE;&#Oi&UHbvv#7?xo9kwncTL$-yUNrrogZQ%2JA*=}HOS2F(DoH{-#t%}@jRqOw~z8n^?O}yDc@7W zt_bbLRh4PB)l^h6n%g#a6HV5Iwb6459DtS&d=o1d>gA9MTW15NY9oIOGR(3!kj}o= zdO#4qFvq0I*C(RF35q-xO$Yw!m?Z#*{|kBHa8xBg@m!!cbAU+ySsG?}sHTl{WiIv7 zL1*YM7WRdVf|nlsD`I2k)%P67qzJv;t3k01dl7k<2sdQqn5Wh3}D>A8M^+0-|`a338fn% zzLh@wow0J-1#bVJXb%TWhWGA#K*r0%ia@gQ!|t}2?~2E6BD4>$Ra??pO;X1~em4rq z|F^K3NmO1V(;#Yk>U!&|g}DY^NW*;lUQYO3#vo|&R@5RH5KFTpV|l|U@8GHsjRsgUuBj**P9lOYp0fJiTUDb_gfLKq zLmJB1tLWm8#a0FE24i;H8csXQ;S~=w;*Jg9%6*us~5OmZNr)z?9ByqDpuqcr{${I!h?I0Yvl}F%c zZrMX(h9hS*d!97ocNbPzET>_ZWV5cXSl0=8v8TKE_etA!Q0_u_c6#v()^IQa>r78?0 z#@@7Jw~AXSVJ$Eh{7Fjh1nOb*gHbOCooZP0=Y!IlBI;$!F(W z`>Q{{6ZZK1K7VVoH)gXhbrWCgfl(xw8Rz2_KN1%A*USAgQIyl~KdLTX!^e_gGRkVm z&KML?2y$cGBnpkbWaPTE)B{p-!(pP%M-q;XD@7QL$9|2`v?R28>?kQCQ6?}dWU>3VL%)UW) z5?%fwsWW%$8Y{A6jj*3UWt6ui2hbD*`0K;~HKeuT8gr&x_niqv%2Rb0^U41Lh5njB zO_+zw-?aw=7tfbuiLrq6pMlIAggxR~@g~F>oG~0{VP}MLahgw483OS_P~W0z*j%bW z76T9v&&LF5f*?bHAjT&U!;+-oFB)gEo}=sGWf`o8=y70v$2#EWG(=ECG zW{av8fg^u)EeDp2dFVjNQ7$itHGK-7Hk9!FY;q zGXxYyX>XZ36pl0#gHcGE3{$*Do*QJCnQwgs;jrfq+cv({ox5wVbq_PLWGHX#H$@(Q z>6dcCz!3<-zkW?%dNVtK$?BSv1lAG+ZVXwju}Rn{L^d;Il&Aziuz_Q!;`w;uVJyVd z(lyq|(Is{4(((Via^Vo2Cd#R2{7KK|I4*ehERMQx0ospeZE6^LZOWe z;{(vW8O1TuW8MHpzIBLRb18m8MjSnG=2#uk9v;XCrzWzoCcPz?~amm5X9j~ z^$9e_Z)CbL^aHx8r7WBtlkNmp<(_^WcuDP?rh=tANHcULtNLkowe2P)u2z6)g9iKOzeJH+vh>c zx>xBs;{fp+K4Rgn!&v((Xnzx0bqU2AD%sx(M_Hw>4TU}&OWt&<(`I^}VJ1br0L8+4niqGUu_K)`FM zI$l40Cz6iY92`gSxFU(amum?M5zFl4h)>sSAxp^`R&5MV{Z*(o7KJ#e38!ytd8C_25E z`hgGf8LQ$M_N>qw6gmQD^jfe*_iT$RfWJHk9}R^+17)CN0I3yibG2WZOfnc4ErxEY z__$vEgaap4BsXM2S_uje^{kKlvzBVsTe413y*jxzSK1PCtr7NP*`Su$Sl-G6yu)8u zJ9Iwux%jUfGNCKucCTUD^Bwu&hBg!_@V#wg|7H$+UEd$3=sAx8Cve(5Cn{zQNBkQ( zx)Y3U>z)^1RJ1hRz424=7^ct}>q^Nnd~N1NqCN`QsVTW>$aw`=Wx$SUrFPn#yzpxI zujU-YjmpvJB~QZ%0)LmBmCuF)?tT(wa5q;tWJ{gm2m{bJk;ezYX&zMFkIov5a3pGO zV4x?AF~UCL(Z;yK9wM%`MCGdC4QVx50L`m4*W7rm@c!p!dGq}}IOkAcTohPX5PvJ*HqBAX>A-qfMR|C{ zCvOkC&GopEKrRC1$BO((D7%(HwuqAgVP^u|C{f80f;Kw@$kK|V$B|OeyjFC83EX`N zOO%&;hF6Lk5-+Uzb>qt1cOe|VuDs3LjOPQ!oqZ0!yc;=S*i^0fXjo3`Z^qg}Jb+wN z#LV9+sGQ=RX>%r!;7Cob=}l8yimG358#Bb?#B8+^kz`l@!Wq0zNdtE1FPR0Nug!@2X|-?yTZPC=I+LI(^T zMM+3lgc0VVB?wR(U=6O~s4>Jmxd8U4q%ac<8g5SwF^RxA(S9@anb^@99fdqqBQ8w~$HHCzgq25lSlb zn)o_U0Lkw-l>dS_^5R#*n9{{igR6fDok;GDoD;ypZ-8GxfJV`*L%+Jp#njGdIlqw3X~nKu*N%& zbwfw8VCo^*?{P9alq_fATSHmrfd+B@kZajwLd$2d8H;*e7L*ZbJp(()qE{t^K#c zbH@m4OX1}Ir=&!Kn44(|n_qIh#i88+51=QXB|Ip~3JsK1ZN+~@Ycq=&4^)USAnfBW zV(^UM83F5I)ev|AzI78`T2ntC4g1X*%tjuNiX%(8*#{Xc9@d9O8!%5T9|=s46|uCW zf%R(*b>_qg!B1xGN%4s;VyJi$9{mJ8Z1x>;8Ru$iVp%JoXAKheD1jfMWo=27Sr)7h zXowi7Z0U?s)KnxCeha8UNu$=yIY|wH&zY zx0H9T)#tv#m2NQwAYn03|L%Qd^c{1B>!6Bt`b>vonDK*u2JvfnpBP{mr9y8tv^7Eu z3l=xG&uCr>tQ9r%l3ZH@lQ+RgQLMUwm??n`3hNM7nt(NUto8zynSdodloc~C%ppVZ zv-aedo$rk$4Z{C@4N)x0pKfx!wN3p)B))=rth zI(0aJFG8@z%zsl5P@}p5+$ePNx{Sqv-YV=(f~8NqId|^wzo*IRs|U!-kKZ7@4?9U; zPuA*6Sw~0OZe=`xycpnI9V9=M88RgBShuD(m7U&H@fBh+&?MBXNSK|L*E*<`{ZaXuKhGiF!;860ZqT-!FX>>mGZ7DsqX8n zaq-PuU}0|&D#TznnkBg<6oBg(srihN%A-joBDJ~ZY5d+~8Y zyjv2D7Eaff_xn8^R>02Fw>AY3eaW!RnGxlk(F*egSCm{PFV(-uL5Ch9 zH;uYEp~cz;Ax_2!$zllNN>OzlE1(rF0e=JHSCei`Qp68C3l{p z{>xC;8|+U&Yyc?bH5;gHQ|6j>iEy3V!dShS9jyUTVj0zRq9x&I1qvWgZZ+4*&itAK z!dSof2EMNzN8-^PNPpE@fK9ZK)`lrxUoe5mHYm{$12SSzwXF1&zj$>_Tz?%kum9*J z+4oO}3S0pCQ$+`a-O;ud1(44K%tKROL^;%62C@W|KW%*Iu0$xqkc>lh2WV&uZDxWO zv_8QP+wNh2B~Uy8ZJ3icz_S`_0Fi3IbGEt=V^q{*zfpqpEA$wKZL%iBcCz$_ic5hEY#UWoV=} z2Jx7}>Vg6&tisw9@4uz>cQB?pJ4jxm7IfbzK_cod99G0yH;T;1&^M{<(f%wd0ZR2W zm^Qqi01B(HzRdfNDl5D13YW=)uIBt@r4%r>Nn7u4K0?YX0hg$MBUprXc!{P=wgf5iw<-y zz7H>gH8yALT0sF6R;ycoy9=&ga((vkS%Rj^T``W49Q*Pc^#H;QjS8gIbuPAwCBPa> zv3m5kKBK6n>?>gmUkyDetSzywR`=6a(3yb|ypLp1;~e4?w>z1t5U>@KRHRMGpnN zyD8xE7N2mQr|d<#Nmk|6XW)VJ3c}vfJ-S-l&y5PdQTSfQ{b9Ml4FXpv9DRjA4?ruj zg#!EY6F3(5b$H%2cY7YZ4B%*_V-0M`S(w(su~v1}cH+T5ID%fRXGnZ0AErWxKs~Ry z(U+~`K)95lWdDt-L1QZP(HO(mwatI}{dAk_h6+COSK+P~`NB$?%?<&|$WT;@(6*}- zuUsXlqN9+;G9yq9R{`xIE_0+^0A?Zi|r z=aU!T)I*PlN4S%q(G(Gl73W(>j5t=u9&`L-X#-qae?3nVQ>~iWzt*TvXg@iA=F?0&_{TcvnNPT4rv_8@elIQ=JIl)A1m}U=E~8a= zyCB(L^SVvp&u=ib~ek0KJijc62kyh8n`%qEuTHNqK(=0gnPB~*{^BxgNJ#&2>yMg zv-CH&@J%+m9QYU9Mq9p;+u70+4&j3V_v2^2W)Gl5XYid5^JNkrwAD%)Y}XVf!GZ( zsjt=~%So|h-5{2ZyqxOyZXiSLB%yc&^*1>yb}O0Cuk>Me%iZrZ3I`5v%#cBGIPJg+*wqmj1~U{U1BRuAtwm z4ZAE+{pa8|Jo6;XJMJyQY3N^{2as6;URNZFmCCP=S7c(T;T8s1sPYY6L}{;(z;&ke zEI{Bu3qsGDnGcsqD`V? z{jCHH5KAVU?7PLwfj7nCXD>VK92B+3%1$75%D@w4y#~BnoZ{iD*OadKhwS%fn2=$G>8`}bZOYR*OKXAC)uUdb<}32&qTu2z?W-dK4yA{2!v3M3XRB=h&d z73qe${+`F7Rv4^Mi4Yez{Ul?Jqh4gE+z5Drr{Wr0sLjQ@1(DBcevPIhi5rj-wFYkAsA>sZ?2OL9S2aU1JGkiFG74LVyHZi}VZl}6ue)>*O0i1l~5}{Me zW~b?W&knTR%8mQRUVHQ3MG{lm^IS|_H>s;ZS9hH68_OWg5Es{c7L5k5@Xcz1Ce}Vu z1o=uJciSw2FG7bv*m*HDo)Rhz)C;1;W{Nh~inr29B#z5dLO&UBgXL4;9b3{_0q4mJAwrs4;keW-OU- zin18v#!@Tzp3sgMZH%E$D#IQt{N#ic74N+QEcp|_J{7P>>-4^cywz7mo&BiZeJ^yd zBx+!AU`RwY`MR~_MVbkGlZ(nzPzD4`MwJ*aVtv3X#aFOegkY35GIf5Vdv0;@#&W!o z2Ow~%!ljCw70#q`yojRgbJ|`*PlO{dj78`jD8)k9;XLwSn@vK=n@^`UB&mfXlnbi` zP)5VDRJGv^AhhpZwp)w^@C?S7++-kEHHuL;=Ps5BC{m%j@i^3Y_KflyWK6r;{Pu^R z^|3|+7lxNT%r)19?I?7DL1)VO7i!ZPq`I~5Ti9AR?CRaJ*Wv+jM*I=(y605RxqE`PD-L(DMUK$6M(Z#MwuD_Q%jqg+%DKy7Lp|E5o=|B^>x6 zxq+9~g#+0EjQUOUuD32QeB9i8@?Po0&0-n0Bt43UirF`SH09o=6l6P+--Ig~UI>LL<81Mu9CnG5TS!-obVVofJLp_BiUArTNr&y4zR%@3^X2nA5f%j<}zyjwPMpl z06il7%k;S-bNXnf-%_!`GAd9`_6%JDhvL~V?k{)%TbnS1cmW~FN*o1D)M8b$huerD zW}zks_#o5B3+>~4yy{Zj0C2-^kC)#yPSRDEfA%?m+P1X@Z3ollIY~L_5n>aTvAYUm zjmM5gFg73%bzOn1IBaEWzsK1SC6^J9uv*YzaPUH@$6r@p$gG*mfn4rMZTV86JiX2Dg^3|4SBJvX&!{rOK=J6Q;Gu{y7&VAB*^yjZx7E+{P?Qiv zw^*ZKJPaO2p;tqa0ble!{{Lt1yu;_X5KxMO3R0zr^bQh0AhZAp5Yl@ux6hq&_WJ%f`^?Nu0wOKB$vt`UWM*=v zoU`{{dzE*+@5g*NQ37<-g~V-){s?2l0Z^hk^=6?d)$zRnkwT439ll(G=y|wvlzK77 z*Z^yE>3zuP8CQe)i|3d>UN=%JS`1v8(ZNDDH`_@At2DZvLFL%RpoA)4- z-=JpzTU(`{wRmdLAXMfJfvHZbucORsaUqK(kE;-Ltp)uijBDk2^huNKAv=-a?UXTi(Z(cj}4c@N9Pi2iP4`p6M$YO zq}N6~XLut7Q3spX#hZsJHc+hbFebb%&j@wuF)RouQ;l|Y@Nxqro<Ln zkoYC^%NcqHVLLCLDaaM*=bWTpxouRe6*LgnV53Eg)VWRu#4}+P&CxJxWGt+8%}gF% zEJn=p@HNb?`zQv3Z#)ueh`B_mAHuXTR*}HP;~JvOKvClssSz}%XjaLoL1PBrvAyVL zz2HxMZWM-iAz(-hz7Yn9WnBD1Mi^IP`um`LwK{h%HIEtwNVWWS$o2B|pPy|S)HAH< z`K2$K1NVh}4uHJ?Pe8E0@4k=vyMHLV-?fytD>E{8n|Jgh1kTw>cRjL3&OEBW?Am3F zs3P0FcAW121J(DR1TRT%Q^FqjY^g%_K8#NQ03ZNKL_t)dxSOt{AD^%p3y=sbwav}+ z825iee1H{$RxxFp+n7B9{7ZIKd74vrlm3)W{Wlk#_kg^=HQc>FY67;xqraN4bY#NG zY;B0S#B=~pAo6uJAY7IP(J)5RBHgtJavMJOT$#*4F*QJ~5*W$Hh#6Iy#nP%ui}WA-X8uAT_x|Gl$b`lF@D$*m1qv4lO$qjX zW47eBsGL)ymdFn3*C6tyc@1Id>$o%!~^3AiXjM; zj16c}L!&A!C~Yb<0V^d-V@|2}6EtW*HfTeQhw%(m2-PZ7*)Y>wVU!9Hs*F&nP-4Ni zigEXpJX~9gl7I5W?hflS)-Jb!1HXXDCoAj3V|x!)1jCtl)LpEUu4e@RlOB1MhP_|a z2^ZZwt+eF4M7(zofi$Fbyw&!KB$g;tK5CTpg2XT*Rm)J`~wo5uCm z>#wWiB!;Rojgrd}RaP=vi}FoXdLRU>Z}D$pUVunG737OhD;|TIVlA%&t&McmyLM9f zao>CLf&(aU_fHOzAN~Cv^~U^Jyj_m%Y3evZgzX(mLLMCPd6QIMahXIRtcgdNZwbAD zu!}CNldIKyYqE$%jYkS-2y(0tVUedyvu(^Xu&k~RjkVj7egAQ6_QU<~d%vyv_5K89 zdgD!1%2u|~ODY(YvkbtaABJvfsZgO@HOx=ABpKB%699Rjt^9Ae5hlZ?gnG^SU)VI93?dxM#JbC{cc1@iyXd$dleBZ<}NzEqi z{_-~i*AsW5HL^x5w+T7`WDYSMDsjH^Mp~L$m1hnJIPKUHPQECm9GOTaho^TCkA19V zEIG1yEQD+xgy>yP7eqK=+_l_X$*>&M z04CfZP!CjX``C12BTrnP1<3DoIPwt>Y>q$!r@9(KV|_xvOoLTc12cVLIyvUp1WUbu zR_oQK684bv{GVUP{QMU@NEYDA`T2yPfl`B|AIe~b zL85dwVf$vxDuERO^JQ0B-2M=_1iJ`$1}__iI#Dhpt{wy1ls#;Y#J{(E>s3LPu#%9@ znYZ-tn@{Iv?)uVmXOqAE7$)cO`eo;8Zt@tmz4rv}eQ~%x|4`PX-_7a`qv00dwiV%s zpHmmB%(bS+qU;_7jIf}-=Rj=HypT|_A-QDvU=qJP&V zjIIf3qMsiA2haKpLg|t(i8vHh6q`DOyzzSh?$_B!Wz`Wrs0r((qWB_MRT@QECNN7p zX5uj`>9OdCi&%C2)dXn(R?)_F0MxQCzx(Nfa^$1v!^{89ysd`I*Y@tAJ8pZj@WTiA z$5|J0>^AfDkI707``(qv-z4IsTmvkwzJLX}B=fQ`3(FQ3wgmbhbdj)pW548Sns1eJ zV;Pk?3zed<>XWoEL=71#)cR-hR>c~YtPygm^YuSZydDa{e96ZV(K3Rt0&}{Q$7=WumhD6+7Zb)z?XuEEV4#h}%B}mn zs6g$i7AC3*h+qO6?zBc(W0jc-Q#`|mgZnc5y+de?wsfg26=V{;G*Y?g=g2jGK{W&T z!jiLkA_UYON5Xkf_Uph=c-ERdg*Nm=sEqMci@nagLF=Ql={#;uGEzR|^+Y zfQfkuDN$w;@T$OTdt_Mpzi}%G$ z8xGsfw*0aUq~b`nzs>h!3A(FNDT1$r`tJhQ{3V=$DS0k&Pe+P~_%>A&G~v(Qh&#@=q0f zACu=IGk7+j&4YK0;SGuLzD=^Q;q)#oLOlmLkC-XtGy)IQ0@Txo=Oa`pq|@QIWF35R zB?vhMANlq~RAGXLrvY}COEH}_#h0#{2 zbbNn#is<~#FA)h-ezoUm*z$Dip8}>AwGUed95O|WLU~Y8SgnYw(!&Tl1u-iBK7-oC zC9$dLGqWqBZ%|($SF}?AXpT7yWB?07H|)+s;LyAB=aeX<6nX^3MqYX}%tE)E zPxmEtD@%cfRi!!c!?E83`*u0-3eBzf82Y%l$;evSbSbJD$VOC3$^Sk#&Kl(^v}m47 zo{6{_WwH@oOc77+xt3l)o)*Ei*zzX+YG z3U$`dJ)N|rK*LUV{m6N5waSsJkXsQ=UQ9KHqtx&XgmRJfXZtsrBx;f7fTO`OBI}eY z)oOkMv;+ZDVp;C)+nqT(A5F`jLTzJOR44-)#AQD}A(Z&EA;-tQXMH#D65vet_)6l* zfGq;Ut|;S-(w(rsCr@1OxEJ#pa*-j32qGe*_(>&O&8KyXys5PwD`-TTVI7K648~g0 zC~J%`Q-#;lrM&GgW!3KABzNIL>^46=Uty$Zw*%B$b}WJX2|4f~UcK*Nd88@FabtV3 z%k+2kqj&{#Cgcca%#khUj&N-YUHI#t8u)2H;JXum7l0iY`_tFutt~NLK(!}~5}yee z1}StQbotHNb2fiHg-t>>3q8a_4nSR!*9V@oh6l30VY;GX0IC+kt?uSzo8lEV;`i?e zQGSHZ3qo2X2kFI_u*ci&WT?6c8}Lf3o*R0<&GZv`(Q+f`U)1B^`QhRRK6decmB%gJ z$i;HZ@{}ih!;9ikk0GWG+wXjTs|LHic>nVfT51sqspo~EptXny9zKQ;D($OKXJK2b z{2|!T8g8tW)z5 zgJ%p~Jf)hS)Omo4S~x|%E?3EawECKgWNT~lC^dS77zT^rM+`C>yOl$o?tr>BSSeV3 zED~5!z(gZF(smjj0O&QqE--xLJ)smUoiL9O|oOo>F!T2 zT`@3g?06NvrIwza!9!51?c8(uxW)fj#;;hO+J^3g7ST>AHtb&jj0p{|RcJw2<|)gJ zWkH}at1Zyknn*4mcwnw&&VZbL{1`sXF6_$l#jet6UnAb{jk08xZrP0V$%zg&mR<_I zMCfIp$|Ww1gcW{U+{W9CMj@eSC&-LV9E zBm}K?{QDbt-sq`7&K!5A zdS0GxJdXo$h-ysOjb=175HTmST@TDu%ZEXZdA?zd@n`{3YRLpS0-GjXSx&Ypj`m5T>jewQ8MJ15jXs+tQS+4 z0E@PJMgGb-@%M)hpF%jNr<$8lyV0<~U5;n5-mO>3OY%<{udiywDwbqRc{XF{ieY zva&HtV-o}>Mh!}x@epgM5}~K3^uSUcxVdNoz#|n^EHua?75~pq`yRoFN}hZp1zW(yBpad9TH^ zE_q3nI#q_Kk`&``UPVeWUzjbBkSRAH-@OYzuT+Qb;gLh%qR!&{v=* zf+dcM5crlr!AgMd332sNRg6MR6^}6QfHOEz`!X(5SR9sgF8q&)GBQ$1%xako3?67W)18FEp{Zt@?NJUfR+f zp$uUQtLwi|(HON|pvvPxqB(@61Z%LA<9H|V3+ z)H0AG^jEWP(1Q*~=K$;pTaB+`R7LNN=Zf|WlaqUZ{$w!P@5kuhxszI8&8gJK170(R zcM(=w%`aqCmjQR+r;yQXZAmfm@p7SjxW1cOR0fOyH4zz%XdY0rzV_nwAL?}MT(_fD zA#iGASyj?Nn+O>o6DVm5Sru})I(|f9?n%MsND+Zce$_kApmXuJ-wE<{Pm>Q71BDXx z=~`Aw+=mwtgzCd7@nUpQk1~pgDmsAMUy#8I3!6p*vTB(x9&eTpWBz6L6Z~vT(Bsb& zI6=D>Usf;l{*nbGGI8X$$&Jc#UkO_6kZecD3#g98P4WdLSMw4%Y7oXd;ENRP?D>(4 z9y-IQfh{2aKJCr5-~`~-FakuN$=x+BrMB5LWwb&?$YorKx=5Wx?@MzSl-Hy~X za&hHTUeD$o34o%3B?pxHLN~9Rn9r0$U=-La2~$cHLYd9m`i?{U9hI#d(r>l#_|PPH z{|5(?`q|G=MuK!1t(o<_w=`9;w)?w5^8mTf#nmpf&q;{9#fs+eam5;DG{kvM3?&LX zMb*!U*rbTPC|tx5y;+#HH^pY+6Fj|-4FmO)!iM!ap`lk&lsAx%n_uf|@cJ)b-?{uh z-Zw7f0R)UeQOZQ9BSGAMdE`IB-LsrH9%VqXBVMaBrHYbslTo zM-y%g0%ZcVR`JdFbeI6NNfHWWswDH3)Q-UT6UDfZOt#RVFf9W!mmEy6x_ih5R!*kK zFv`b1-q4r4w(TkG{_CFGcyYGDOPDtU%Tp+efgB;)OB_?I$rBVyq4l>&k3j$14w9z~ zraiUT+O*l9^x8U`(kI;HPx{>Gby+Jm{cp5qo4FGpMN;RHDNbOh%;xY6mz^Bm)D$I} zrCI~ZA~1P}lKcu?%0L4aDQ4>6U*ED=6?!j(`l?N9P~X1ZUGllm+HgvP&GD*%$HilX zm;&d4G&~Q_czDIhzRqLQjQxc|bDE>H7ZkrOix>`gGj!eJB-Bu1LuxG5 z4kr7hA*Wxf!sOD{()lywNQO;Be%w1I)m8Tat2UWI-R?NJOyQ&p2Fl&X8~fW*>Phi3 zIUdm*(;V%k2?8`wg5oww&!q=!QGa~ruDNNa0g4r_By6G%Y?ii+5*SAQiIbKi)=-K^ z2_0-lh+;ww2ozSU$dsWAc3lZj@>Wm2gXQj)Htq~z0GrIQ`i5Uh?@2W>w(Dh_yXVe9 z+XXC6wldLVd4_-~sx&!Jj^ru7LQqXUH0Ts{-Mnmp5QfS?3QN5Qfw>*H_ix12QVt~Z z3@RI8tY4gHS|?c))|D5Ucyj*hfBjePkZYF9~a`~GH}xx&f~6U>#Ki7 z9d*c7&nY^b`U_dobtTW5EDxzN1!yo3c;XnHTsB@p@QoBAy>|MA|C3Sp?}>!YV*`f( z`5qA?gp{};t^Lw6kE}UNpl3P0CnN~D-)ym7UPp=lMQFqFmZnoFfbEyer)kY!O%EIo1dK;3oBBz^VhM}Xf6{pNGvd??M(m|2sUluO6%P~`=b1xCnpJ4uAso-+B=6W??(cPld~_ok zT$66C(vq20c~X_fY{2VQStLT5P|D29BL!)X6pXsZiajk|yJFy~2wD&{QSCG$8^cy# zpggC&(zG}>ELGYN78{?rTQ`$708LqZt0Zx3@6p2A(4jz)a@RT+TlCum$Y5ETtWGTc z&+k7BE@!-C2mJ%Nf3hCLPc^;ZH!yX#O=qkfCLr~|kLf21^^d%u-Z%S!_kF$cCyEYG zR-fOP3C?5&ZQhHy98cPSi6|c!SSmu3Ljo9aD8hDSwn#0wy?Sy%Sk!f1LY{J3I{k1*^&;;G<*-OD3Ny*4JM{b&{AusX|<&2=KuMhFBHxxfMAD z`3rY7PER0Zl)25x9kVczu0MQ<>K?$mV_8-9SE+gwQgv)Hc(Jgl!xd>}N7r?+!o{2d zoZ`+)0&TwyRspZZFJhK4%oM{`2m^q=Kot;kO(G&-qMbeZ9@k){>m8d8(Jr>hZurp{ ziQ~i|3g<-HofD0eMQB##Ju>}4TLTjPSR1~9@W(}CW z`^26WKq}6p=7bBVJ?Blf|Iat|q3^-+KAYDBdG8&VH>2?U==ve65|zA>gNMZO0K&s+ zcpl|l30SI@oGLMem|8q*F&c`&8gN_yYZ+#7ohGC5cydoYi z`*q2=ADnFiKztFXy#g^76G$kPRZIoEL3hm}jII`3-~7%Kc>q>vNo1LE;5*~>VNEdW znNt13&BIxpMt0fyCANF@IDCd~T3Ma{GBBgI&eMnLivxF+@h9~SuIn?sxn~P4%{P|S zV=@cW=4!FpRh91Q(OrZ(v6Ly4Ae4zxrWVhs%qCEhBE-aVc>?Pgcp~cQP9yM@hR4Nm zavmHhs9JI&w2IQImPU!O49jd$-cG=b+m9X9ybmA&>H`F61RoDDPAo!&jY~XHbv@od zXaFqGc;*GwOIq>ZHt6<~bNK_7p>bi%0+salZczU*oIcFvvLWQD;JEYPXY|84nCF(3 zuyg6@DyN*+3^a3X@5R}sMJ0ZWa*~w$0W}2Fs!$_B7qL_k5`UsfxhR!lNJe3Sbrf6< zX=XYJIX2ABU)*cq65?qwtPx8+0W1Ad=Gd&vDfM*Oir*nT|7EgT7~;m?3J#3>e9^rP)Qh{c+4jr zgz{vP0W=^MhnNSRrbC`UKaRvq*kGQsogKLw#0|(ftqU(y@6BcbC5Rca3K{iitL$r9 zS5EsyTWj`y-EZVF^YqjMG;`xVjJxCr;{!;N1WGAFLLg^c2iXRPi57JIqU^I80kMu6 zJ5)W*7!7s&0R0BzxwY{j`BoaPUW8t?vMYO4--o3F7_-^TjfdC|fGV9r!=RBOC2+{I zSF+ptqom9AQ)T{uQ?>8B%k#~COU{7BN_OgEa;Mx%>oXrg)ktJ`HPRS^sY@V}Mv?}C zv`1z|e~~`(RqAR)1F%iYRXQ!eS8f0T3z`cbmkVs$hDi)WGmCp^?xQ}oXQr#(Gxa(x zy=#D4u4D4q!*t9E56Y^6&zplle1N!z$yj1m2uXF7^(#JZzzfam`Z+cj=az~Jjbd04 zoq9F@;;qRWl*zh;Dpt{8YB#I+)ShxP0($nSSLE#bex=V% zIfuG4_LW4#dwTNw=;|8efJe_JJ}1v97{RQ=2~I6d_@ zdJ>oOHz}tHZ(&!VzEWk>tj_p<11*uI-H~K7THU-mJsEAP7woCI%+5Nq`U#QLiImR& zgPsaHVsa(-%&@$@bUQ{~+si)3>)`^gxJ*W8d_4l#(FCM~ytu{&)lVxXl(06e1b9yR z$r#86#5BiLFT;Ip=kq*(rr`j&RjOhh=W!TYYAFE=Kx&lD%ty5-(w2}X;u*O_&){Xf zMEfp8CvS&%tG|uh{sMX^dfGAY=RX&ct;Rr0ToIWqfj^qD)8{e$m%pOhLw9MpDzmXt z%PLm#bJdc+36exoWt|3K10A(1lvPR4a-qe>jDKU6#2we@FDISIjTKqdhBz%CW&M)u zahgYu<61bSWd}y-Yhe;FYYM3UjVY7UuI4WVd2$uV+R&*NA+V6mzbOti^wC`4lky;N z*Wa4zqB8kb^o@dEUJ&^TC!hU_y? zL3A+sh)rvtKgXQ**OzZAezGx`ITQ8#N5yR$(tn$<*S$>*&7an#*j$ePK1$Y1(U8u9x_F_V~awPd} zRY_o|=p4$zPe%K_x5(llK=N4E3mJU*ib;DqI5Z5E)7 zz#E9<!7mp${Z)Y-9buj8ADm=yn;bs6d!OJdq?JNs?F+nj>LLPzhc6a-lDL=C!( zZql9QU~-hFO5FW`NJ7E@03ZNKL_t&&7^uYNH0MQ87d1gmDdwraqvy`X@17vuk|jwK z3BQ^;$!(_Mb4&na0_NAhC6O7!nO#X>y94aT@xg-7NpU76sQjZ<^Q=*0aUmh=$ zhkr;5Q1jR}3?H5raipESMnbofC~0V;BA29_=P|%nhLmO*U_B}XVk*QiBqZbm2xTP= zF>CN65>Qo)Dq=#quzWb#d2E2qAQF%TvO(C~=NU?KG5Q7`wMH22$62&EVB$s7crzts zD>!$7GJl+L1^^W$Cz8k4OI}K7!}0+X{`ojX&#=+AH0`tH9W^~?06d=@K%YT#_(uI~ zo}P4!W_C+$a+}lR?;(Tz52Wvc!&D{Bz4x9ikLQ+g$Cmf-+9_Ri$m$G7EgOMsl?Gtg zpDSXE8=5Mr47D~*eiEEPW6A;i zmm>hm0-r%2_5ZgA*gx!lD3_1DNS}K3X{ttCBL08A1_M6;8aA1M|IQq!A82@VtMBUG z(_7^GuU$t&zd$AqUa9{);Rwb6M*)W(I>Ebl*wm6a_4PfCum#FMBMcE`kP*7LNGqp8 z+Gr@DY!!Qg$=V1_;qt1M8q z$qe|GyP``=e?YfAk%hfHu1hC)^~bI3It#hu0^nTq0E?M8Y+_gO7^<+1RYqXxjS$CR z2*?0xOkO{be8t5$Y4H$qp*9p>RWW%D0C7T-TEs}#d3@D7zaz+z2p=Q)@xVBvY>NmY zRTvTo+paEQF0d#}0ydMOj2882i?X`KF8D?s3oC-JLQTptAo25FAIQy;?RVCD0^iqk z?Mx;-lBBc|*kjX~01HZwg~d~-ziUs3WobL1jVX2LeO=L`f!ctwR4K!4jFEvb0->Kk zm4Sp~d{yIx`-B1#@<3u-i51PaVdpWJMeW%jSasG{v~&C4pgW-R%)$Y5QWei`?ev*eRec#qIp!5>L)s=v@C_^|UX@xT)2Uq}3VrPz^{63SVxSgoNLM zr_c@P?^Tj8sNz+5N{pM_hqFbtb*jImW5S-YV>bFhC&bf%ROeP93B=2(c9E z;MMDz@^3C=t`tMBrh4KAgg%RH7NHHuq9HQ4=zBVZ8=!&-0xHF4>#{1X1Ng;RGq`%u zU?b1(0(bwQV_eGlpyz>}hjcw>p?r7FK{8Q6)khV|70?%Ww3qViJ$*@Yte&v+04crf z!y)Ms_O$Q~lwJx+G2sF>g29AgesOvy!UnW+<23?a7LC8IlYp|0pCMm=4gzctgh*0V zRJ0H(xaZMdacs`*L@Xn5OHsrVj3*cqdKr@cEFvl5PCsDngka?U7kNz~Z@yCncG;W| zKr6)YD38Z6eu)3i2Bp6vWi9FT40cDb?okpuiD4*Z4A|-b7C(D(TkfJAS|#DPK=%$* z+{lI5wH@cxvS#`K`Oo5V={vPqXN~d5ZTC$EzdT+m_IgUbdBjh2G`HG_VVV0Tr% zu9mJ6*~Ccg*Zpe?u6DavGFr&_@pfrHmBRV?*CHcQa499f^9XAf1oPg-I^?oNu|XbB z;CLS+)z`IR3e~lK^X8rd$S?kUTo#UnEf&<#b^Uo&ut8Wq_oFb{S6Tu~i-nxE*mX3= zHey%EO-407USR1S7)CDGkp=vdIXjFyQQ<^F<@1g)Z{%V?RkfsvVac()7at*8G*6OA zOXHf}`Vk)esbR=rmvY6^dw6r^(mfD%^OU_M%+OW^cEKY~Zz6kJakY9FcBz5JyX0Qp$5St4f7YS;O$2ejBz68P1N&Wq?&*Uu>^aI5EBSY==GVebo3-Y z(J)>ZQUIy}Y6It;Sy!iaqOOG4gHY(jV0;t0{St)kzC$7A?L}S~rt|n*BV`od^Jq13 zmXjo79%D8DL15Arnt+rmF?5`4NU`TB7%aWWF|uI|TO9G$JM!55Mu%3P)`7<9F<=ts zUvioZirvP0hwQ7}%piNol3StTYL1gvwd7pNf)d79;aezGqV3mXl+^pmLb!aLsr_L> zpo%fl4o9GB!#skv*PtrUzZYr+`JJspm8Un7+*rFi73K;ArPWwgRVK*!Od1&er`4=l zTEx)id6>1`$Bo$qQgyi@#Yh<1l%ovMfNdUmjun63{pdBUxk-JlAlCuLZPfH9={E!Y z)mfKu!XKNsv(NU-?fVb~G=imw z358sYAlA6r^tyS7g6(ouiKvWK9Jv<1uhSFwAKl~PoKCo2TD=@A`y|Nu>=@q5L?V}N zgJzM?1AvZ^ZH+`j&@js_gcx>JdSMxxHO!Asy!o9BH>YwPWYFH*%EN*TW0=ku7shP^ z^w)~OVbd|O8U|w66=e*H#Xw+Dv4xgtjq3MbvKOEQoB$3`gs4-LavF|N;vkZCYp+4j zE{jb*|0io(heAF=J97d5`$ie|_(aIfCSzGq6Oc7C-V8G=%Xpy5q7KvOu z@`9nVp~XYjURTy)#lsl47_eZWn-RVdz~U}v&|H5hO#r8+;o2_Hl1lR|FR%*}+_n|o zr91gKKeB(x(_A=X`1uV%MCE1Sb@w4wT}}3I;5HEc1pG>`W=n=$(xS%zC1+PuW)ta= z2^bIbMTqC?=jwP83-H;nwl1Gdepb3xV*Jn)lJ2Cq2w_dcKN0(2DLQFp=kF7ba*iYi2+u-)Mwe zXkTb$#C_HR_mv(9<>({h5I9kh6LpxYm3KS7OX-S|`e8A{cWl5=ge0<792~{nk<9y- zI68UHqKK+Z3b0eGvIb?QSf(YFx#F=ZV`<1hTda*tZ4>E=4B6Q|$k_lgTO1(Y7@ES~ z`?$O^nM9@^v1BhweWe6LS>V%!9DNXm3XD*XI+xrEztJFS3%^4Z4HS(zNjahx=c2sB z=2#H0p;x?0axAU%y|yI;_|HCt+`27#2Vj&offXvW;!z726LGyssK*ybK|xqH#;aUw zqPhY1#bXGD1E0S7`3m_zc?QtRzbpLZ1i4}B3uv9xf{wa?X;VhYE&s|ff6WTzr;r7W z6>lqnLBxJ04<*`$9%O&+lkq$7jOe_h=}N!cl7tJ znKy5kZ}^S~Bg9Y^)z*>rj4YfQ2R^@CuYrVPX;#=2Vga6c*3r|`f{0HWEr8)6_cVkmov#@q`oH(<6 z!~3}uFPa=%c!sU5FkEBAttBV6(8HqY_#(qDXA6iYNB~wW#fE*;kNt~0IRie1dTUv} zVrilkZE+T|zasO69e#&5EnrwiI9d(EjS#c0R_k!Z;(ClXs&Y&*Il}s$yVnHB08_;B zV09~#ms~(AKzALCzt@Q@e4$miG>wPsvC|_6V!wdf-u8=}mBrr{s4}&Zpq{~W|QPw@hy?X>ad*df=xP9+F zo&|?ohoU@Ami>s6S&z3h`iY-OuH+W)gO{wAXr`M)DDDo`GO1pN=%h!$@0(i*}NZfi-H-X7{o&eKcv^S(xbjrj}8pm8$&6C zB_;*ykXiCYOs=moH{g@eldjzeisaBU6S6M}H7V3^WIK>R;rkJ+@)=6JzzA zy)H0!ZF^@)vS!8*a(aL$V^v95A&?N}Yg`}rmsj2^z=y-wJ|J+F1|te;2ozdGn6JVs z={6>E7E9ZG#(qlAf5DPGqsS+GAIhEFAwMfUjC5-_zmB;K4xIX1zVrGC!u0A8!;)XQ zBatgUtnq_jCr_AQ3|p#FZo%N=`2iY8R0a?G<>MCcF@bIbe3u(w4QS{oJtR3EZabHS z(XI%tObod2Bi8*ll(__{4=jY=E$-HuG_zP+5Y>m;kEKCQ&zlUe+dhxX87x!k z`{-zZVW87oTII@vk=#>NF|8ki&yReizqO(J>It5hqMG}c*sGxwnt}+i`WAyR9!4w~ ztE>{kbLF|xe;+gF;Q8+zbc;T`b%mvCBTp~sVOn}Dld7pDy7NK4<%6a$NiUyV7@7Bn zUGevLhTcO$gK)?9_m=k$e@uGrTdKcGCza%C`Y+qf%GIT(bA!{^DNR ztyTG^!Z#2Gh>-9FFP9@1guA|ohiHHrFPy)dn*nf~4~sl_D4yVjrvGDgI|J~3{0{ zOfPLX`qowjnAg-tRxe$`wlj0e6qoY+8p;GdQ#PSkJ?^QR&To`MX%Lr)Qm25T(&5(*<6@q`WF4ysps?9&GY2# zBak+Oq z6oqaCOi94MdUWB98OPE}papHf#>}qaV2@1YWFCt!G>Iv2jX8A~OHo%@hq9tYSO!(B z8a#wSC>0iJ8x3`*4Qrj@Ur@dxSN5&u{uPhfDEqa;Q8O6$mk;&!LyyOwF#j`Mu-sSl z_&0yfC!_mZFOpeEB3ngG+T^y7fYBJX6JeOkS!BcdO+gt6&(%4;Ot6*~aQPw_qXY^o zu}oFVEBzC^HtiHzzr_zY_CmO^_7tZ4@^_4$E3ow%WoaLFe(4liOA>PD>3e7mqX~J6 zKjwI87h3zymG=kCA_aJTU#B&96{$BaBfj4|nz;Kgx#xR7gLjTnJrGir!kc5l3eDx= zfGq9uTfeEz1dTaQQz~qyhOS146Sg>8BY8OTW^+W|m4Fq)>X@?npf0psTvXeoYb~r? zU5;vuNvx5*Z=kHHi4)YYgFvMT%P7Vr1l23XeQ#t5!Sz``D5?=hB|=MtKJ`>ci85DU za!#3QbIcAhtl4G=nd5!<*}?9;^MHQhVxUiPB!RZ|y#D61u;K!fXm~M}Y^EZ$ie7QU zP^;`{m8~o!1p@K%;GV*6rGOW9`+X4xxOkV(H&khRhs7D1HKM$w@Lbz+ChJuMk9sN> zmYz+I#B2J{s%L3tq4Z6Rq(0rC$}k{6m;u$!T&@0Od-GP0X)<>9c1lT#S=+zHAK%zP zu8Eu{ANnnW1vSX|dKNp#CF}|MI`B0C9!BJQ==Xm)#(#0ZTZ7Ubdt@zR2{jLVw|N!n z;%ng?a3N3raR=Gh)|vxaOq*7O*H9qk86J(pqiarKQ8bqfz}$C`!|Sg@xQ!hJ9Xg0M zKgUNX_0dhU5yUg9_jZsFAi|FZE@|d=g9v%18j7LBRT*fNJw^FJ++(kJ2|K(qmwrdR zN-|Hm)}K$m_&@2GxO>b@da;+xVobJ?-8{oVR@q+-Bh?UBCBWhsJVIQ5p4%~;z&4L} z_>%7(A>rh*z%nt5c`92~{Q*}I^Z~Yy?MULzKl1R(mjylq#*uobfrq~HBrsKAYUqH! z3%v8+zAeG1rKd4x;9~ZA=s;{T#ZN$CG(J8k%&!5sf!{KZ{XkDg7z=Pda&9IH%(1qEgco5-P6_yez7>a90-mElIowsg*m1>!vP1BsW5duC6Wqr|oc$vR9Uje|; z+Yp@g2Jbg0Dg`i8#GD!zNU9-jm97GVV?J|jcjj{e zE8+?2ZI0FHHX6Awbj$zi5$*oRZxch_DXZL)%2X@Wq=RlINk3qq4d{tdr%)l_i4cgP zm=s4uikhATL!tKn`9h*1(obu{@r}SdM(|K<5U^4$uc+{HAl^)Vv8I(@z#7of*5v?Qnlyr@_RegC`HZSTwwU-TjaPVK^D``yoD+z&u0&Z%a+JR{dMlC){s|c%|oh|IrdleLr zA|PNx#fCk`8jVRztkKv_#9m`BG3w9WqOnG!(O6;wDWagF^dh}?SlB)@_rB-%$9wP0 z?6TOAdj0TmXZFtQz3+YB^PcmZbDoDKqAU)D=o0(rfDZa3o$fPXo^!Sv4E|CEjli@>@J@h!u&*&Q`HrB ziGWRG)r-I~$uP;TO{MtU3wTe2uT$688PKc;a(-hxw!ut*ft)$GzJudTL3aDj7Gwnx zk>yww^ebfd{+Wf0`KxsG5_-5X>?elCI1t!{uuez=UlAMWAH+0TTU4ssMr$z|67^i| zhPBwxf+ti;z{o_Bm&$Hpv3m~1cv?op3218o1|1zmK(gpgW(n+qu!HejrIialGgQR7 zxerusVN6|%zLs%NPtg$4>f**$p3vGF(pFiEQeuQMRjSigt0Y~$TzrygA4w@lfSS

#A@#&nSmsAys^S{2kgO+?SuBzZ^yM0Y4cycB#zr*TFcae< zp6@#E)KU(7?OEP$TExtQUZMKMZyx9MfTy}+iVXo(ww58OMIoq_wf>Gpr+0 zW*&V@EMK(*ehGsiKq&PRENDgb}5)N)FZ2<{m56eqH<8tw0#n z3XoO4i3KqXN}ek9R4KC10BB`A+FNLCp_K})tcx| zA+zbpdeME4u{%En}A!F@uOljcjU%p0edQE@~XJ9h1c_nz8||NE9n z)SiQNeZH>urP~Z7Rgii8+_8;$`_Pk>Rp^WP$LqB`E>loeJ@QFK!y;xHVYDhstrFO{ z)782AS$t~?kvWY!KQp0gCMI_rixDHZh#_T!48 zbOEXX3Ekq)=(la!dnT84C#K_8%Q`IMsFqJtx29Hc#g1}&&xJZ^O&Tu`!qn#b7@xoQ zUnHrNb2(faj(APi?SF@iIc>J|c&4`=THjy$T6r)w2xy1L-Uv;UNRvPb#fvfpTMij+ z4G$%DTm;m37;HoWB$Q&A+iM3_KY9wbD+T=d!6oc?&`r{_*>_mO_3x)sRW--@!m&n4 zs{_eYo>WcQrGN33g`#^9lhvW8bugPElNXlOWNtz7}M%;ojkOpn`CSc1yq zYZ~i{4vVF@qELMV<#`}q_I&(AZ_*rkhmAQIk3ItV;>bw@&%=vLW^)1K&9=U!7WaQ9 zvlVSF>O$8*go#w}yfKWgxHjhb6k(N0&>U+vv>_^r>hCCPQM}k#Gg*`p@i7^YWNTD} zSC9}qr*~(pLJ(j>_bDx!gH$ZN zmCyc2P|q+MVS-VX8yop)9-a-eE_6(KvpJUv=Q1Sc;7MY@sKu&9H6)2;X)?*IiuS*CN<*9^Wo`ET$QyFrSPPv_dx%%UEq0M!~EqsUf zf6ir)Nee{}-{dqs#WL9O*&0{psRNH9dh57Hzh>;N8H?(E;YHrSk9FVc`uQ7niWnr$ zjCJ-33=R-mWI{ev<4@uolE3FNF6?f#?ap6wRIMr=FUs$)WF=>FHs^58CSMT0(sdS=xiyGK!!v$ z7E!SoY+$*D%(S;s#!7eYtxH9kw1Vq{_A0u8WJeg86i=Kt)cPTslvOe?31^_xQ$Y+k zFd&D8C&QSfb%1X#jH5L*_3<*^PjubJWky1+m8F-cU?+Ad zy|{%pV?};kC7*6U{z;|g_117_Go?>a=1ro3r51D?e@flny)i9gZDx z6f%igeXe#ourliH%{~Ok@HUue_jkf70K@<-pp+83%?}i?TA)8gON?KvD2%}Qvywk3dHGggUA`j4jgN7VM>HM9fUBAiP{dE00 zueAwHHoIqfBoDw5$8hOGv$%csHLu8o-jsWRfINrvHKKRO{-Cbddwb_t5zB#teS%%M4-#&U`^c}NKQ6D zqEzSl)=YD9#2LRqB~u(FxwP0h)LmA8qUDkSEu(lfqqHlTu*Au1Md!p^dB(;1g5aYB zSZ1OO6~jlmru)*b?koro`KX!+4Ns!OJ=bu4!`VDt{!4bDLhH&G)$FC&^oK_P_{it~ zB~ji?=de&IDkC6IX(-lj-XLlu@-gCS7xClpLAE~sL1lVLBKbRea0UUuI1*wv0Cb3*cC&A7!WfaKG}gYHU~G02r4C_vl1f? zInRhmY(61?)QVNsqmNwAa7nFmbKjN?$38zQw#<#|-HxAO0oGiYMKdU|;JTOtRZ2AE zYf(PdknzFSJyw*xFvWIRi&WiV)XaI1wNF9AUsmfepSDDK{W~q~O&%(LhaDyM+)mgJ zUKL` z&MWPZ!*}YW&kVUbIe3q=CY4rdzPRqWeh5B-+K|xmFk%pEGj6hGdXD3E7E@!k=yt7_ zA7-p_TC%YbqF^Em9F4yk2j*xP;)$Zxuv9IhOu*EKTGW%kOrorf~Ip z^!;KG<9B;oe*4-*@GH-;DQ#5`Nw|8X@)}SrZPxnfB@;cLgDe#LuKz>BEhzk#n(lyS zAtcSXL^Vs2z~L<9y>Iw@-B#|}o8j_1xh%azW zD3-CRga`>S7^8@U4nT_*w;1E3oiY;98s*Gk8_{OjD435*76U+WO1rTK7KK>GT6`Ol zXAH{`hJ{pbJ5DJ^D@WBGRIWl1q2e8R0o12YrHmw2!84u&WDi=SxKbRSk^L zLxd(+JSC!DGSpP8)~LtA62{$xaj}I`H@E%vW5X6eV$CL-;Wz+CcxfWBjx?}ZEK9{O z37^l+3TB+N&QCt~L}2wg`nv*}kEpD)~`Kw`_67&8@MNhD`GlOgnGwA1bfr3B3EK z!HX9}XP#TP2eIB4hPb-5U%vo@{>f8kx0JKWo`rj_#|tl|{}>grmU^>JlMfDPtT$cve|&hbj~AS$et;wkV937c zpiiuf-zTK+J5!ZLyKaT{Q~CG5Pn45Rd{y%wAm1-zZ^`G}(9+6U((9=%ZCYDj^TMfv z%fe;ie1TQfY5rkDMshvnZ}K8{a37!W*#>c%x-o#>e{yF}uC{$%exE%jJyu7uV%0R`-tMR9v2v$mM5-WD%E43PgPWp@)GI326n@+qguyzPgMIR#-*j=9V&B0 zifmu_-+x0>2t`owGJNkzqpT2^X_d+9F|(m%ZO;{yRql03y7|s&JRahzL)LKm`91mQ zrD|zES@fCa4m@6UrhHnj>KmV5-3DMvFCfnj7(Q4g zGD174(FK2d#_-i&b)U-$C~Q^=OMn+ogv%C%)lkyuiXBUrCKjx+R%fHyQL!yWX(mcj zga#tyN44;XSA+dVwj?R?pA+24<;IA2d=X;Su600(SV|>il`$+&7?yjmEUhf9xQunn zf#pEc`$Fb1Mot-yGNhO}S9FwuF&*@b`opL^de0YegfuG&%8~A{kl1Hee&1X zuU^4C4J@c5y>M2SdfrYmJ0_qtA+01qWAQ0cCEr>^Ow>MWGc?WH4L}`RyaM89y1SG# zp?D8n^$|>?y9>UH4m?eMwemH2W^%c*0bv&ZTd%{9q^nU2NlYr=H2^dL z8rGa^Uvo9xE*%SbUsMWAWi?ZS-$Bp=FaKoRa*90sI;ZI+{BfHfCy)>#1Gr6y!x*!wcdJ%cYfhKy~bW6w{ctMJ!4rULIqHa15h`)<&$iT9~Y3-ZmuJ$uUTSX zN&}B2)!jU+1oZv#a4smS&zW*O@a#AKjSV9Y-*E_Z21wU$KX0F3;8z}o&Ypvmu0Sbo zM76DjcKf=I5ECdj^!{ug$!~3#*KZ1ITCJjR3CP=M*_S_Jq_ii;0%Cl4hDdz%F{Tk%n|c?QA4?7 zHJ)eSodRWe$z_!Ma`5%0|Kh*u30HJ74P}*1>QiRFz!m&l|DCe{KfwThTd}_`5uPtr zd470LeedYW+h=8t-IR9o;meNr49 z9MW?*G;%)=q63xPe^JB7@9Y5O?+*kjQS%lKO2w$x^nr>Rs!8rZyYQkr3Hl9)(FT-BdoSz!YvXbB6S zJSF0xIHwCM3ajAwa;54(Ufl(l3QVf|>oZR%8QWxw4F=p#?&cC=10h zrV%Xr*TL}H*LId`9(qtL_wvOT%NhH%;tA{X_kw}u;w8zF1((~drpNN55^2QrJMFzG)>la?xpGEWL1S3Q@hK~ zJ*R3BQ1NqtfDAbpcBDQx)nl zGwt#IQ7uV5tZ=~@aOq&IPJNt7Pa$iPquFs{AAvbE-Q#mz64{m3KN|+H(_E|t8#)Z* zaz&0;e=WJ(BBtJid&^YhMQ@do9=o% zt$5`Y7*cSGzL@_TZ4j1gtEubs=CwCzyJuQEdK;Uyt-a!*dh<+TF4MMcmlA}L;02)C zDnsIw;cMLn%CP3^+vf2`A7}U*iR&B2eQ+U95KF1_GiPCMgXg?n&Rn zc&=9_-t}`uVO=$sW7e9BWn|~2doS7X3qQPT(e*O!n7_K3@7o8`as{?K#hTy5*A!^8 ziu$zn0$PdvnK6JEz<3kdu7K8IzI2<`iNj90P4G&jHS?tFqDj*4CdIpwGgA)#b&ps*@e)%uCoHKawg>Mk@+&W_` z#KK#LFJk13eYD5f`zW-dJ-=0|LqTFP-JkK2w1&X0drNa{a!gGJsAZLge5IB7U(UGy z)9|v#tX{FAC!Zd3d3c!#U;b&6${y$J{4=jWbakTuRBGF7qB6=stalqZ^ zEsc@u?uTYT0q7zDXiu*J%jJ|~Q=EIbN4IVvmtF#Y`BU9B;#=RCHU=rljPH$uksCh! zukz`!ZhqZN_e37&8bf~(syAvOTdboYPQn{?m44CUC$#RF_y!}2XB{*d67n%=^IG+F zc5-omRQRaQx;%4=SggP(Z5i+-dhVZJBHLIk(I$o_XG#C%&m;@iUY{-mxzOW)bAAW6Rrxdg~%#}6{xeu@F?G&!5M43Z@U<;6-64lM3 zJ>%y&j6!h=DK!c8>KoAnq|+8tmA1`qCe`IGf|-}Q&cF2y&~d-mR*Y)@?5^|x?6UBEXjLjA=z9v9ps5H2 z8F`qWp_pB44h?-w?BSS+<1j!XGM!Z@pO`$R%{$ko-XDz291B&q!Zr8(UJoko!6452 zp;+TaHgf>`J^@|N67B;UimD>R-hmUoAU|C|!@>kj(*aG=KJ~03l152mNg$d)qROXj z#{t06DyIR-cP@XJj@p3}loOB?pEAj#T&qcYl>`mfwM!O_JtsNylk0N4Okr$Kq~Z$n zfZxL}UO+BchaBt!6Hq?%RAz=8qVVB15e7u8|J_9Yx!=)p=&o=_kST*(b`%(C3CH zXY%BkUvtFkUA1|MY(54+au`({(rB^!A{;7kJ*q0~@)(8l*U&W-`iajDC=Cz_6htkS zFe9UFRJJYl;F#&twSi@1%dtuzhH4v-@`Ng5D7DHOV_8`huuwgg_UuU6vv4Z^4~wr#AV$jecyc?xywt6cA@z1vj*6ZgK(`14I|Gtqj7RyNBkRUd_Y5n zRh>om_Pg;9u3!fiK!8eO+Za<%)v;&H_$53!R;HY|j7Ga7o$sN3Xt_(3E=Ew#I3RAL z8Gx95STLbtLv=FUo`)YvwHt9tMT^ApzeFA%p52a;yDyy_9CtuZnRC(KnXvmyDyzQ~ znjEX}pC1gCZ4?Y(kT`+S_-J|f=Nxj%Y06vu8Tsrfa_EK2>d}sV7?wY^o9yn`((EGb@o?EoHph_r02wbbMVinqR4>;-x5`HxugM>@G z$WJiWRBMom=1R%Mf-w^5_-RHuUL(U0=kY8nOvsn{@WmcoSabK@*f~#~Wcv4LLs|Yh zg|TvL0)BJyQFMCwhhMI2#PJ4T9wL)b?RMH9>0I?Ve|@=$+<0+i+x%9^Ka0-*6{=0` za>yJvDF(b%wvB{9jme|YRH*A&8RF!SRS+>wzeAJ&C267DD08ggO9Cd;TV1fEpM9uu z-+Ru`8wFrbmc9JBtUU=$ipM(|a!n3+^Q(XTn}45sQdB0lb!B5zfoBjo9WA<)LTSR$ z)gC7pp_!MJag!gjKyv1CwliL9=taf=pHq?su}X-+6R4Ds&l5@BIj;lbZ$Fg)JpM;$ z76ZxI=mnios(}N)ARN6L{tvv;javvL&R?-@4AnY8RmfEtj=iN2b&i*Xe1RrL=<6w`dT?Q7i0!6J&a0rS#n#*|hw<&M*0RmMC_BwQWj&Ia@2;4yz=S=ihiqxX9W)NB~mnD%p*j zMRKH}W32@Vos4@y=+RYtn$&|{dK;q}7vz6l@@HG|M?v+WyIA=4P9X7Ez2v6nbs>+kP}DkK6^`o#MuLbskNOp>0CR*X%-dd^x8)DMsM{^=@&6QFKTW;MDUyclLxMl%LzA53i>Sm(;opDO#X>kS(5LF!Vk~a6 ziyM8cM#Vs2!jMorR%^gJMIrC6xt8Usid5rxBJ(!R_-`~P&x`)Q+DBF)dU_I0uyDdN z=rGU)0bh$pcY%I!hkGOyBsiURYYfJZHhhax{Bw1l2uJU5ayRIIO2tBgzindrjSrD1%S$H&cV;VPvu3>M*@jT-=O z)F@8`8Wo{yBMqQW=b_~{!Yn`v>rF{WRR&;l-PUvX>M9<6t~AR?nazSRvc!i#X~8x%0#b<|Jt>k7BBw$ z+^_{#bM(yXHhM42#tW?@IaYg1b1iew7__Xr(>t#-woj zU!-mXa?3lO($n4Ik5*IZkm=2=(p7|(z9FHm5--CAAV0zaWa!6iMC@s!><$?ZSFI(q zif5Hdl!?ImQp6m4&z#hQC@Tr%sqi(<;5j*s=Qi57Y(xX#{2Gf3Ob_<(V-qBV*LjN{YI|Dg(4o=pT9<7}lqE z^INYd9wFy)Wj@UO)iKbx`!70PpXL<(C#PEeUi*T}ph z!ZYipGCR-b{NJ=!4dEmHqW9dPGUt(0vQxlpFJLIjWKqh*5hOSqAyOL70dlhsB_~je z(l^@#vBmd^093(ulRJ}svL-W*Ax>blDZ*YV99CMuj;9WOtN?&U7gBKi8f{R&R2zNQ zxObDr_uqB_|H=F`sxQq&=mvBYAx|SPPSthgNiJTnAsnGr%}Ug~qc!$FXKck7#B*XE zLUwagQRakJhE{8XF_nWWsuhKa?d04G;ML27;SK!O-ssu2ORAB63E1^dgP`Xm zLBZ$uthnqk*jKoD8C7lTGs{c!9x%;#qQ4f8N%o(F77aqe zP@R-`3=DVa> zW)YQJXY}lUR16U3) zMjjQ{XYp-dn`C-)qj_ju%1h>H1$bXjl-fDIaLk21I@eD;MVZ@Ja z5U|#@PGS(;;0g}p+Acyu_9TFoskifusDUm%)O`))4l8YYN}Dc#zF!&sdknWXTFuq-+bg|hY;xl}rLQuj7jn-jWqfwe3B2+C ze{|ibK62zfbF{fY-u2Y;3mIrVj#i}$E(_)=|BNftA?DrRutHFVpFa)+GO>L`>=DgJ zG1;)dM4@b;mL;C$;~>q4sYxv2Rl?lDxiBIHi9LsnJ)1W=BT&|G$$IgcAc%T2U5%{r zLrp>10k<*gs{}R;jj?o5!84#5qM>65QxnxrV_c_k^o54)M`oyVhFxm)7id&DC{fLO zygRA!AhdK04ErxgrAmO&lE&!C2h)D}+tTDSwBgj#p;3v1pY2JI2=vP1-r%Y?j?vAb zN~`Br0Rui3MjTvU3z8qOX9HxxtG%SzK68{i@DbVvmH}AWiQtRdU`=Lo*Ke=?&#mG` zTtC0M`fCkC2l|<~gTr&xfL5^)t=CeNVVcjo;apbnDq(KcKqSKk^s_ZzZSqC)MgMYM zIq3`b8tV++@T*C+uHuVC$g^r0ZygJsPmarFU0&6S%~L!v*uwdCylo0^QY6P0rJ#e-q%ll^PasR5pWL3QICvd z=l^XcH`A#VUp#aMy=Js}V|R8iwp03Ox{tB$ffGLk>j00oRl)$m;fI z#aN3Kg@ljid6{Bjbxa?Kv3L@)M3rH_$oqRO-e+a_gj@WZ17N(#j>-b1uzCjYu811F z|1USnMK7&USq8feZcs42Y3Xh$;aFqn1{A3}GEoKfBtlhlP}sgczxYFnhW+Yjc-u*0@Hmmh+D@OWFwDnkA z!I}Y#kI7AA10o)lfO(>f@P&^{uV9{{{0+ElGl*C>>0fv7#+!`T{}?%N*do35_Wm-p z%Ssxq8m>>Dw;uonH*-js;2;sY8KI##N?|L4iR-M@q1&?QhjR;q39>{ZDh5LUn2ccv zHDIAtUiXuHcGOn`SHJr1NZVtrFtx!OlyMCAe$`PLmCx6U_uG8#>!}Oj=(mw(bI>bM zp1do+QAL>AJ@h!rgTCMz&@vu&j^Z(8dkv|bD=S^&~Xj(~oD|_0$IEXj$0Jll4+P!0umCfN)ke5bEqTJG3 zl|zlv+w%ymWVV$%B5K092IrbhAOBl5fDvB6LtFk~-e30LmkyrkSRcBv{Fl?aO zgNN(VkN1P-OE>wBwP`T`RhG6XBlKSe(j1xow~nR^*cUE@>R(@>To|OADboympfJK( zR*IrxU2U}puCR5(wHw=yx@NH=*2TZ#IXKk`P((c#ksIsd(J^f~s60vk^ZL+Kc#Qhx zSL&yGi{_nHpr1{E=cjKzj@RVf(JQY<+h0Q7k}>pC!=d7_i@3TpwGL=^%~CPiubEJi z=zTU+SSHz!fvCL~BZ%=ZQN6zhR9l!P%G(VCM)Y04stW}@5R`Y%qn`D&}7Xe)6^gyeLXMsp>Xy@x188l_G%7?ToFdPnmpnm-c7Q>Cg*SIZ|2EuXEtmK6ZJ zfp84^sVF1Px=$88c`Yd_^oecO07MT}afJecpoQ?SbCAz_!{5&+Q}Q2_+vncO3$4p_ zia`BqD3E$|4n6h@gxxT-2J+&Em7D4!dMHG+OSy(2=NyUHbda2!Yb{Q(j0k2l zm7~HS8*he2Fj1w2uZA*Us=!FUfX}Nsu_pKhK`~0(MKHacPy;ke!U1_OY;`wiHVtrk z(1{HUt12*hKiGQ&P{6)lPvDcTI|J#gw6!Y#Jp_&(;#Mz=2s?fsDIv#g_MiZSO8ea>n-^xf4{b$R^jvCw%6K`? zDd&kbKOOmMCt6qMv7dpX1$Hw+k%F}@dt^=abNY?QbW~YV=SeoRp(qh}Y79o8#K0II z-Z6;=V_W{_j#5?R%6RbuB$Rc)B*6a&ShndS)=i!T$lYiI%@T<$6Qxz|7Crh(?(cRx z7d000uP2cxpmkvAX@z|e`g%fr3~2$)ZNH3o2IH76!@8=L&@*_E;;Jh*_9F6;ZN&qS zoLw!udrMt*B4-DzLRn^o30OwgPx@2W+z?a%oT>1n0B;&b{?bx^EYkO~hWhJs50_`F zlH?EgKqw*Bn%%Zx`<9<3Txn@Xl9 zMMMy5zy^+|0>@^Z6lI|*qkWGr8&)RfbZRuJbks$AXy)ssM%0^u-UA>Z+pqzk)~>O^ zFfSM&c&9+sX-eM9;Ge+;~}_#3Q2FgG`j|Q=? zXQC3#h=oN0OK8D*F18glXjHmsR3jGG$TitsP?XiHi(=pmHCt5NE+~}vRuq$~NPe_MZD*K^wiFZG_we<%G*j?Np7q#oPsvr=2c zBwwqYdFP!)^8QoRJiBfH4DBe*4xF!f!#~%>!vgl6PTuFsX+a_VJ>{1Ooy6da5MrHc zuQ@^tD54=jsF4A1OgUn6Cc<_Dka2~vZecjG)`+$}bj?^Hj&HD1l~tn54l5WQjAat< zWd)8^VI^&)g)G+f!as$29AOM?v|OJ0)&;ZciTE>jp=ao`pBnm!PqA8x)R2fb*bG1y zyZgD!%5}K^wZo#^i|{l9m>L8LstF}QijX0iW@xH{Sxn5UYW3wbUAl5d_dORJiS&C< z%Kj_A=rdlLwHePEyGDQAWAm>|*&?JL=FNw3W8i`S+6)S0um9B3 z-Csz_gaYKTQNDX-?|}TGdNt^9|0Y?BP=?S4Xs(uenLc*M`f73Lt%}x&6WLZk!0!VR znw%Kc2^50K=D}6mVlo1aF|-uNgTGXjnPDEY?wG(LNl~IuRd@$gDWN)qRAMnu1ZmHO z8ub#G;zIJ8+)1H&-1g%6elj z{#&ynCiWcMXVcaJ_;WFgZC8+ZXU1jeN~qx6WykW+#V5<9d+g7>y`VENBZ=NHL3B%~ zOWPtQxe8pR@Xig$aW}d?>x)4effWP)Q7Bcs{|USdVb?P}S=c>nZ47(bkb$An(K8ea z_|`^j!@g4Ukr zBuo0dOB+0NK`1Iy`lpV9>TJbXLH0FN_1ee2? zoM=rYs`+3&Pt6tmW@|sJEN!8;dR-O1E&C?Jz zg`?L%t7~rI$)nze0b|G^U1fm^9WY3Y?cZve`eJ)|LVppuD>OGAMUfVPX534uNlPx| zqz7ve9Mxurm1vS_&UbAsKwy+3cT`uBsR_t3;YRzc7n5sBHia1Z2^#J3PbWAK83nBaG?AKNh1B-HopD+3{o0>f&u^C+VjS5* zo@nRKk)J1XZMnT4U{y(DnQP!9PkGZ=h6Z0TlSip$xX9jWWZmD+;H?+oyuY^r`Iuzh z8X%3BT4|&$Xkl&EHmX*0-%oPnKSCm0LPJ|XJKtj$W9X|wXH^=C1DI^6gkl}xNW?a5 zBOgF=7lVz}WF+GzXUdPamfgShedGe2QGPJnO}8P#Q43J04Ww$V@QIpfyto88H-y*R zm_6s(GLt4sU*vi#HuH-R6@!o9Ye=;i<{HZsF-)oFF}p*+ikU;|SFQW7)XpDzoZNWO z8`5bedi_!8XNAa~6J{uM`PO;4v1PrsdJN#FSVOgqNb+3Lz^dlAQ?@c-O`*pM@mQ$P z71vu<-xE9)LRFU`$N`n8(Q)W<;I1D$W{kGjttEk2ml4~bVUzDT&+ACOulH6R?LN6* zE_L@SWIOg^LuDb98oCjJVnUaxs5Z(16EeprQ}ZlSyux}*PTF&avWNDX7D5@1{_#1P z)MYA-K@a<=t1{yp_9UUu#^_tn@@%N zlF1&v&t4e%h@pu#4Hn6ZliuK$$$M>s`~U2K!wZk_ z7BqghLA@fHX~@nP`r^^cLQ8dAdE~%7swSe;4>PfUoTJ`mItn)<4?v?L9uOqRdIjPM zm7Za~fzNHoOvy{k?~uq_J#1A)b;}!6n}B@4)!LuiS!s9WdDBADRUh!1_mTFuJ#8B& z_vh3P_A-aJTp{g1kKt@PhwDJvZ#Mv2%yHCV^nYNH95H`K4msdtU8t9sPQU0z@w6Tq zoLjE_E_=R4e`u>~^9xH0QeDZ@U9Hg7hO`w!QxOW(6|6X%CyM{U)y0R3`riNo*7gi) zR~zQWvb90CoO5azm|Re7JzBJ%00{i1_`fb*fg0Dkf#2806*ffcUi*Hi2|`LPvy*7{ zS%j9r8cMJ%G0HsOV_N-uCM>;}^nB z8@@dJU*^-r6SS()8Vdg05l$~fIwY%r371^Mq!)_Wq1>`hsPwc#YcVuLC?r5Ei09+Q zWD=5Ll&^b12pt!JF-2y1FD-nz=DzfH5@ zn~X&5`(b_Vg527yAcV9hR3;4TRG22pn8Y$BmfTNy1#yK?A&-(qmU--b)+8D6?tV&r zxWFrxDWn-dQdb)2_dI;f4zw&>M>S}dWv#U0z~TDg>L!Ag=+>}(ZaW45SkeOC8*reU z^4b?b0}lNVR(cO}SsT?p{@1je+L#>@V|eStU!ZTVfM2wLse9U)56xXTuIJ}(R8;Dy z>S}hjhF+3jCp;P(rGZrk0O~jFl;4C}*NJG=LX+#tv26yLoSOjYThEAkIHuo9V2xN7 zE6hyhG0r4elvhSs<29s8YPh|noO{uQlD_v#ZvFBD*k?9OO7oN!Xa`C;i~X@h?%b}l zrG8?q+yZ*j|BmFpXFSDjjZ36I=Jz=u=PM!t|97t?n}!=MJ1JxETY76IPH^R6a{A_% zEjyJ{#^4-|R&(Knq(CZb5o-{qbM08(Af_$=)|CLY!TCPlTwyx<~5`fXXDLbu`WtJ|1gCBbKL!0DKvxjQkjzJ5*V+w z7$XU7n9Cr%ao@najlN$vp*f6Dg+5D??!t81-mF+=Rq)j@Auu4yF6S5`Vt~Ng>E9Mk z?B_MC1~wl8uq;D#&3*653jfOe>op3SrD_1)Hd4|$!i_W1^qs2}HfPGwc{{C>&=Ywq z#c-^`QdPRGM~4_1HD(}Ek`d=wqfOo_C6q*IFFP*r1X3P)twj8eq_m}T+i5b~`@B>4 zjg};J{~eP}7S5cQ{Dhr^bR)^g$1f-FURN2kp}Ii-1Ui?hJlA}c&TdeJG2=0$%76>m zX)QY%A_o0g#$LUZF!T7Ns@7Ela0H}N_Yj7+$Ora3z}k)_TvY5*k-u~CwJYV%D_-&Nx`Us%VyFE|5t-+y)>|w2?CaDGooS7?*@=fjr%s=3&E$hawdd;sM6Q6_#mW#0t9<_6WS< z41>lnRBstuT!Vk@iA0yam+<_mCRcL+M_O+B`Z3%WcCz^zs9iEh-(!RFAD+<_k6oZZ z5XN!o^ol##I|ThUqA7GNc0!jJmWrht$0Fxw!LZm^76}wp2@^g71xV0@X;m`I_2nuF zq}1m*sB+dwqjQU8Z=9SY_A)ew^N*+Lq-;A0#gysppdQR7-`eC!y}cBuqj! z$!C-WhBaao!#FSk>=9wN5r!Kq6Ka@jU&izcm*Yl&jS4G(ORoQ@T=?)g`fWCFhu#9f zH|5T%(pEiy!<$EVga_nPAGt@vpLx*nH%3u@JGxj(i^nCHI!(_U-li9xSXtKkTMJ$( zqQ2g9P0}8<$_(9MNRL{2jitvxiwp6bP&9@*ghJ$E*E#W=^FLM`YsX2ycsQkrLxH4p zsB7Fn9s`ys$1p<^AU|fX$s6@XO7;=^o zaZDDV^jHg}%h%4mp6xHf@|D1Up<_Lq`wTp}rwNhCs^^ne@1NaA-QF2${eUJD zaEz}k!LrObjsv=kq27=&6>H+^t8=&vZ;+ebqhUPnPGj#OPTbqLMftFv7L^!3ZwTUj zE^|BfQnsFC8mB8NMh$6$c9oV)Sv_zyy(%)mmsI(Y2%pt%Dc;{8{!1sAm)T{XYu{E= zF3^Bdug=sNXz|2#3baK+H-=*oI)P?Yib#?eOPk)}gkhM_n@Nu0qEfZX4^VyMKYAq~ ziD|wxa+MQaz$OGL#wDddbwuJQVc6vb460?qS%xEFmqv`q3?(ltOq<5W8Qb1CQ(I@s z!++>^JQSx4bl&Km)C#4~+x(q8vF$iH@0#b;?l=KjpJI6YGCHeTUG)Htgp93xilH&| zY!5ohlZ3#g4d{Dz{6+S;F1dHv`R@8}-7HQ+^X_^$uVcTEBk?A%IJ7M2AYqpMHm2b_v?N3BubqsK*^ta$o6Z zP5}*>UyZ_6M9xWh3Ktf`U9@@u-8IlE0d4AN*IMdaz*0O4SS(7xxtP_~Dg{+M6->hE zKgR&*>r;+Mg#gJW2Rn`M1tQ}yg=5r}8Bxc$z=Zlt1OcOLV)FGZZ)#g+Xrhh*U=io? z}{7^k$q7SKXej_Uo1<9KYHxol5j?*b*y2pngl8& zk^~|iy673$cfp~oq@D9v94an9&g0->s;XG^0FI_S{&@U%_3A@$CMrer1HNZImc<8Z z4&lN+hdCz14mUzuGljBH2pch4G{|Hfi)O)!P%>rpB|JcfPOKeX0f``N37P}Hxx-%5-*sFEG_ZPmu!-CM9m)LkKP;phIDsM_2yb`%<-4eO#@vFG}1{hc1lC4KE zDpK_Gz4G%dn6JH5JxHojm7|`PP`)g>d`vU}<(#R=21WGI>!hzW$TIf7dH)|XB(ZkH z?>*t{*J8BHJx+1F`2h(iI@Ke;dIGcV3snQ~R+aw&kB}hKFRoI<00000NkvXXu0mjf Dm&$Bo From b5fb23e4480ce638d71cafd84164f603a10bc866 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 3 Dec 2019 16:44:47 +0000 Subject: [PATCH 18/42] run sysctl after installation Reviewed-by: James Valleroy --- actions/minidlna | 3 +++ 1 file changed, 3 insertions(+) diff --git a/actions/minidlna b/actions/minidlna index 90424f867..639104d96 100755 --- a/actions/minidlna +++ b/actions/minidlna @@ -21,6 +21,7 @@ Configuration actions for the minidlna server. import argparse from tempfile import mkstemp from shutil import move +import subprocess from os import fdopen, remove, chmod, stat import augeas @@ -61,6 +62,8 @@ def subcommand_setup(arguments): aug.set('/files/etc/sysctl.conf/fs.inotify.max_user_watches', '100000') aug.save() + subprocess.run(['sysctl', '--system'], check=True) + def subcommand_get_media_dir(arguments): """Retrieve media directory from minidlna.conf""" From 3bad37a749a95a26bfb4fa466e0a3483254697f2 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 8 Dec 2019 14:43:46 -0500 Subject: [PATCH 19/42] minidlna: Add managed service and Daemon component Signed-off-by: James Valleroy --- plinth/modules/minidlna/__init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py index 48ea0bd29..68ea19a95 100644 --- a/plinth/modules/minidlna/__init__.py +++ b/plinth/modules/minidlna/__init__.py @@ -22,6 +22,7 @@ from django.utils.translation import ugettext_lazy as _ from plinth import actions import plinth.app as app_module from plinth import frontpage, menu +from plinth.daemon import Daemon from plinth.modules.apache.components import Webserver from plinth.modules.firewall.components import Firewall from plinth.modules.users import register_group @@ -37,6 +38,8 @@ icon_name = name managed_packages = ['minidlna'] +managed_services = ['minidlna'] + short_description = _('Simple Media Server') description = [ @@ -84,11 +87,13 @@ class MiniDLNAApp(app_module.App): url='/_minidlna/', login_required=True, ) + daemon = Daemon('daemon-minidlna', managed_services[0]) self.add(menu_item) self.add(webserver) self.add(firewall) self.add(shortcut) + self.add(daemon) def init(): From f19a5b746f588f29640c85bf69ef48faaee8cea9 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 8 Dec 2019 14:44:50 -0500 Subject: [PATCH 20/42] minidlna: Use single action to set media dir and restart Style config path as constant. Signed-off-by: James Valleroy --- actions/minidlna | 12 +++++++----- plinth/modules/minidlna/views.py | 1 - 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/actions/minidlna b/actions/minidlna index 639104d96..62df13f25 100755 --- a/actions/minidlna +++ b/actions/minidlna @@ -25,10 +25,10 @@ import subprocess from os import fdopen, remove, chmod, stat import augeas - +from plinth import action_utils from plinth.utils import grep -config_path = '/etc/minidlna.conf' +CONFIG_PATH = '/etc/minidlna.conf' def parse_arguments(): @@ -67,17 +67,19 @@ def subcommand_setup(arguments): def subcommand_get_media_dir(arguments): """Retrieve media directory from minidlna.conf""" - line = grep('^media_dir=', config_path) + line = grep('^media_dir=', CONFIG_PATH) print(line[0].split("=")[1]) def subcommand_set_media_dir(arguments): """Set media directory in minidlna.conf""" - line = grep('^media_dir=', config_path)[0] + line = grep('^media_dir=', CONFIG_PATH)[0] new_line = 'media_dir=%s\n' % arguments.dir - replace_in_config_file(config_path, line, new_line) + replace_in_config_file(CONFIG_PATH, line, new_line) + if action_utils.service_is_running('minidlna'): + action_utils.service_restart('minidlna') def replace_in_config_file(file_path, pattern, subst): diff --git a/plinth/modules/minidlna/views.py b/plinth/modules/minidlna/views.py index ee3926f2c..0966e600d 100644 --- a/plinth/modules/minidlna/views.py +++ b/plinth/modules/minidlna/views.py @@ -59,7 +59,6 @@ class MiniDLNAAppView(AppView): 'minidlna', ['set-media-dir', '--dir', new_config['media_dir']] ) - actions.superuser_run('service', ['restart', 'minidlna']) messages.success(self.request, _('Updated media directory')) return super().form_valid(form) From 4909e776babf4e624d29d64f9c1bdffff08a1a99 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 8 Dec 2019 14:47:35 -0500 Subject: [PATCH 21/42] minidlna: Show icon on app page Signed-off-by: James Valleroy --- plinth/modules/minidlna/__init__.py | 6 +++--- plinth/modules/minidlna/views.py | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py index 68ea19a95..f874dd52a 100644 --- a/plinth/modules/minidlna/__init__.py +++ b/plinth/modules/minidlna/__init__.py @@ -34,7 +34,7 @@ version = 1 name = 'minidlna' -icon_name = name +icon_filename = name managed_packages = ['minidlna'] @@ -73,7 +73,7 @@ class MiniDLNAApp(app_module.App): short_description=short_description, url_name='minidlna:index', parent_url_name='apps', - icon=icon_name, + icon=icon_filename, ) firewall = Firewall('firewall-minidlna', name, ports=['minidlna'], is_external=False) @@ -83,7 +83,7 @@ class MiniDLNAApp(app_module.App): name, short_description=short_description, description=description, - icon=icon_name, + icon=icon_filename, url='/_minidlna/', login_required=True, ) diff --git a/plinth/modules/minidlna/views.py b/plinth/modules/minidlna/views.py index 0966e600d..a61066080 100644 --- a/plinth/modules/minidlna/views.py +++ b/plinth/modules/minidlna/views.py @@ -35,6 +35,7 @@ class MiniDLNAAppView(AppView): description = minidlna.description form_class = MiniDLNAServerForm diagnostics_module_name = 'minidlna' + icon_filename = minidlna.icon_filename def get_initial(self): """Initial form value as found in the minidlna.conf""" From ec7a74bf207d7964fe7001d519412b038acd47da Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 8 Dec 2019 14:48:05 -0500 Subject: [PATCH 22/42] minidlna: Fix webserver config name Signed-off-by: James Valleroy --- plinth/modules/minidlna/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py index f874dd52a..08021951e 100644 --- a/plinth/modules/minidlna/__init__.py +++ b/plinth/modules/minidlna/__init__.py @@ -77,7 +77,7 @@ class MiniDLNAApp(app_module.App): ) firewall = Firewall('firewall-minidlna', name, ports=['minidlna'], is_external=False) - webserver = Webserver('webserver-minidlna', 'minidlna-plinth') + webserver = Webserver('webserver-minidlna', 'minidlna-freedombox') shortcut = frontpage.Shortcut( 'shortcut-minidlna', name, From 11447c5788d452ef970dcf2926b286a32d9d39c1 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 8 Dec 2019 14:48:17 -0500 Subject: [PATCH 23/42] minidlna: Only show shortcut to users in group Add docstring. Signed-off-by: James Valleroy --- plinth/modules/minidlna/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py index 08021951e..951e238dc 100644 --- a/plinth/modules/minidlna/__init__.py +++ b/plinth/modules/minidlna/__init__.py @@ -86,6 +86,7 @@ class MiniDLNAApp(app_module.App): icon=icon_filename, url='/_minidlna/', login_required=True, + allowed_groups=[group[0]], ) daemon = Daemon('daemon-minidlna', managed_services[0]) @@ -97,6 +98,7 @@ class MiniDLNAApp(app_module.App): def init(): + """Initialize the module.""" global app app = MiniDLNAApp() register_group(group) From 4ff037a6cce6fe760084c09bcfa92df03746d0c1 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Wed, 4 Dec 2019 13:09:04 +0000 Subject: [PATCH 24/42] mumble: Add option to set SuperUser password Closes: #1680 Reviewed-by: James Valleroy --- actions/mumble | 79 +++++++++++++++++++++++++++++++ plinth/modules/mumble/__init__.py | 12 ----- plinth/modules/mumble/forms.py | 38 +++++++++++++++ plinth/modules/mumble/urls.py | 2 +- plinth/modules/mumble/views.py | 52 ++++++++++++++++++++ 5 files changed, 170 insertions(+), 13 deletions(-) create mode 100755 actions/mumble create mode 100644 plinth/modules/mumble/forms.py create mode 100644 plinth/modules/mumble/views.py diff --git a/actions/mumble b/actions/mumble new file mode 100755 index 000000000..6f0993a0c --- /dev/null +++ b/actions/mumble @@ -0,0 +1,79 @@ +#!/usr/bin/python3 + +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +""" +Configure Mumble server. +""" + +import argparse +import sys +from subprocess import Popen, PIPE + + +def parse_arguments(): + """Return parsed command line arguments as dictionary.""" + + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + + subparsers.add_parser('create-password', + help='Setup mumble superuser password') + + return parser.parse_args() + + +def read_from_stdin(): + """Read password from stdin""" + + return (''.join(sys.stdin)).strip() + + +def subcommand_create_password(arguments): + """Save superuser password with murmurd command""" + + password = read_from_stdin() + + cmd = ['murmurd', '-ini', '/etc/mumble-server.ini', '-readsupw'] + proc = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False) + + # The exit code of the command above seems to be 1 when successful! + # checking if the 'phrase' is included in the error message which + # shows that the password is successfully set. + out, err = proc.communicate(input=password.encode()) + out, err = out.decode(), err.decode() + + phrase = "Superuser password set on server" + if phrase not in err: + print( + "Error occured while saving password: %s" % err + ) + sys.exit(1) + + +def main(): + """Parse arguments and perform all duties.""" + arguments = parse_arguments() + + subcommand = arguments.subcommand.replace('-', '_') + subcommand_method = globals()['subcommand_' + subcommand] + subcommand_method(arguments) + + +if __name__ == '__main__': + main() diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 384c07236..565e6a478 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -26,7 +26,6 @@ from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon from plinth.modules.firewall.components import Firewall -from plinth.views import AppView from .manifest import backup, clients # noqa, pylint: disable=unused-import @@ -100,17 +99,6 @@ def init(): app.set_enabled(True) -class MumbleAppView(AppView): - app_id = 'mumble' - diagnostics_module_name = 'mumble' - name = name - description = description - clients = clients - manual_page = manual_page - port_forwarding_info = port_forwarding_info - icon_filename = icon_filename - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/mumble/forms.py b/plinth/modules/mumble/forms.py new file mode 100644 index 000000000..14f387b89 --- /dev/null +++ b/plinth/modules/mumble/forms.py @@ -0,0 +1,38 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Mumble server configuration form +""" + +from django import forms +from django.utils.translation import ugettext_lazy as _ + +from plinth.forms import AppForm + + +class MumbleForm(AppForm): + """Mumble server configuration""" + super_user_password = forms.CharField( + max_length=20, + label=_('Set SuperUser Password'), + widget=forms.PasswordInput, + help_text=_( + 'Optional. Leave this field blank to keep the current password. ' + 'SuperUser password can be used to manage permissions in Mumble.' + ), + required=False, + ) diff --git a/plinth/modules/mumble/urls.py b/plinth/modules/mumble/urls.py index 78580d0b7..50cbde182 100644 --- a/plinth/modules/mumble/urls.py +++ b/plinth/modules/mumble/urls.py @@ -20,7 +20,7 @@ URLs for the Mumble module from django.conf.urls import url -from plinth.modules.mumble import MumbleAppView +from plinth.modules.mumble.views import MumbleAppView urlpatterns = [ url(r'^apps/mumble/$', MumbleAppView.as_view(), name='index'), diff --git a/plinth/modules/mumble/views.py b/plinth/modules/mumble/views.py new file mode 100644 index 000000000..65714a674 --- /dev/null +++ b/plinth/modules/mumble/views.py @@ -0,0 +1,52 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +from django.contrib import messages +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +from plinth.modules.mumble import ( + name, description, clients, manual_page, port_forwarding_info, +) +from plinth.modules.mumble.forms import MumbleForm +from plinth.views import AppView + + +class MumbleAppView(AppView): + app_id = 'mumble' + diagnostics_module_name = 'mumble' + name = name + description = description + clients = clients + manual_page = manual_page + port_forwarding_info = port_forwarding_info + form_class = MumbleForm + + def form_valid(self, form): + """Apply new superuser password if it exists""" + new_config = form.cleaned_data + + password = new_config.get('super_user_password') + if password: + actions.run_as_user( + 'mumble', ['create-password'], + input=password.encode(), + become_user="mumble-server", + ) + messages.success(self.request, + _('SuperUser password successfully updated.')) + + return super().form_valid(form) From 16505551840daf1758752df52566b4b090a77efb Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Tue, 10 Dec 2019 21:13:37 -0500 Subject: [PATCH 25/42] mumble: Keep icon_filename in moved view Signed-off-by: James Valleroy --- plinth/modules/mumble/views.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/plinth/modules/mumble/views.py b/plinth/modules/mumble/views.py index 65714a674..c09ff30f9 100644 --- a/plinth/modules/mumble/views.py +++ b/plinth/modules/mumble/views.py @@ -19,7 +19,12 @@ from django.utils.translation import ugettext_lazy as _ from plinth import actions from plinth.modules.mumble import ( - name, description, clients, manual_page, port_forwarding_info, + name, + icon_filename, + description, + clients, + manual_page, + port_forwarding_info, ) from plinth.modules.mumble.forms import MumbleForm from plinth.views import AppView @@ -33,6 +38,7 @@ class MumbleAppView(AppView): clients = clients manual_page = manual_page port_forwarding_info = port_forwarding_info + icon_filename = icon_filename form_class = MumbleForm def form_valid(self, form): @@ -42,7 +48,8 @@ class MumbleAppView(AppView): password = new_config.get('super_user_password') if password: actions.run_as_user( - 'mumble', ['create-password'], + 'mumble', + ['create-password'], input=password.encode(), become_user="mumble-server", ) From ce0b8bb580bc552c62348bdb0e13ddc4d763efef Mon Sep 17 00:00:00 2001 From: /rgb Date: Tue, 10 Dec 2019 08:01:07 +0000 Subject: [PATCH 26/42] Translated using Weblate (German) Currently translated at 97.8% (1091 of 1115 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 f7086b3ef..9b4055ef6 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: 2019-12-02 17:30-0500\n" -"PO-Revision-Date: 2019-11-21 18:04+0000\n" -"Last-Translator: Michael Breidenbach \n" +"PO-Revision-Date: 2019-12-11 16:43+0000\n" +"Last-Translator: /rgb \n" "Language-Team: German \n" "Language: de\n" @@ -1117,10 +1117,10 @@ msgid "" "24h), it may be hard for others to find you on the Internet. This will " "prevent others from finding services which are provided by this {box_name}." msgstr "" -"Wenn Ihr Internetanbieter die öffentliche IP-Adresse regelmäßig ändert " -"(z. B. alle 24 Stunden), kann es für andere schwer werden, Sie im Internet " -"aufzusuchen. Dadurch werden andere daran hindern, jene Dienste zu finden, " -"die von Ihrer FreedomBox {box_name} angeboten werden." +"Wenn Ihr Internetanbieter die öffentliche IP-Adresse regelmäßig ändert (z. " +"B. alle 24 Stunden), kann es für andere schwer werden, Sie im Internet zu " +"finden. Dadurch werden andere daran gehindert, jene Dienste zu finden, die " +"von Ihrer {box_name} angeboten werden." #: plinth/modules/dynamicdns/__init__.py:48 msgid "" From 6114e45e1faf5216c5e93ce22a07872458bf07a8 Mon Sep 17 00:00:00 2001 From: "Luis A. Arizmendi" Date: Sun, 8 Dec 2019 08:47:11 +0000 Subject: [PATCH 27/42] Translated using Weblate (Spanish) Currently translated at 100.0% (1115 of 1115 strings) --- plinth/locale/es/LC_MESSAGES/django.po | 296 ++++++++----------------- 1 file changed, 97 insertions(+), 199 deletions(-) diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 16cb953f1..4fdb85bc5 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-02 17:30-0500\n" -"PO-Revision-Date: 2019-10-26 17:53+0000\n" -"Last-Translator: Fioddor Superconcentrado \n" +"PO-Revision-Date: 2019-12-11 16:43+0000\n" +"Last-Translator: Luis A. Arizmendi \n" "Language-Team: Spanish \n" "Language: es\n" @@ -17,11 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.9.1-dev\n" +"X-Generator: Weblate 3.10-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" -msgstr "" +msgstr "Página origen" #: plinth/action_utils.py:299 #, python-brace-format @@ -432,15 +432,7 @@ msgid "Restoring" msgstr "Restaurar" #: plinth/modules/backups/templates/backups_upload.html:32 -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " Upload a backup file downloaded from another %(box_name)s to " -#| "restore is\n" -#| " contents. You can choose the apps you wish to restore after " -#| "uploading a\n" -#| " backup file.\n" -#| " " +#, python-format msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " @@ -482,6 +474,8 @@ msgid "" "Could not reach SSH host %(hostname)s. Please verify that the host is up and " "accepting connections." msgstr "" +"No se localizó el host SSh %(hostname)s. Por favor verifique que está activo " +"y acepta conexiones." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:43 #, python-format @@ -489,6 +483,9 @@ msgid "" "The authenticity of SSH host %(hostname)s could not be established. The host " "advertises the following SSH public keys. Please verify any one of them." msgstr "" +"No se puede verificar la autenticidad del host SSH %(hostname)s. El host " +"muestra las siguientes claves SSH públicas. Por favor verifique cualquiera " +"de ellas." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:55 msgid "How to verify?" @@ -671,19 +668,13 @@ msgstr "" "ofrece una terminal de consola basada en web." #: plinth/modules/cockpit/__init__.py:57 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Cockpit will be available from /" -#| "_cockpit/ path on the web server. It can be accessed by any user on {box_name} belonging to the admin group." +#, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -"Una vez activado Cockpit estará disponible en la ruta /_cockpit/ en su servidor web. Puede acceder cualquier usuario en {box_name} que pertenezca al grupo " -"«admin»." +"Puede acceder cualquier usuario/a en {box_name} " +"que pertenezca al grupo «admin»." #: plinth/modules/config/__init__.py:37 msgid "General Configuration" @@ -832,19 +823,14 @@ msgid "File Sharing" msgstr "Compartir archivos" #: plinth/modules/coquelicot/__init__.py:45 -#, fuzzy -#| msgid "" -#| "Coquelicot is a “one-click” file sharing web application with a focus on " -#| "protecting users’ privacy. It is best used for quickly sharing a single " -#| "file. " msgid "" "Coquelicot is a \"one-click\" file sharing web application with a focus on " "protecting users' privacy. It is best used for quickly sharing a single " "file. " msgstr "" "Coquelicot es una aplicación web para compartir archivos \"con un click\", " -"enfocada en proteger la privacidad del usuario. Su mejor uso es para " -"compartir rápidamente un solo archivo. " +"enfocada en proteger la privacidad del usuario. Es muy usada para compartir " +"rápidamente un solo archivo. " #: plinth/modules/coquelicot/__init__.py:48 msgid "" @@ -955,20 +941,12 @@ 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:45 -#, fuzzy -#| msgid "" -#| "When enabled, the Deluge web client will be available from /deluge path on the web server. The default password is " -#| "'deluge', but you should log in and change it immediately after enabling " -#| "this service." msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -"Cuando se activa, el cliente web Deluge está disponible en la dirección /deluge de su servidor web. 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." +"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:49 #: plinth/modules/transmission/__init__.py:55 @@ -1566,21 +1544,19 @@ msgstr "" "firewall." #: plinth/modules/first_boot/forms.py:29 -#, fuzzy, python-brace-format -#| msgid "" -#| "Enter the secret generated during FreedomBox installation. This secret " -#| "can also be obtained from the file /var/lib/plinth/firstboot-wizard-secret" +#, python-brace-format msgid "" "Enter the secret generated during FreedomBox installation. This secret can " "also be obtained by running the command \"sudo cat /var/lib/plinth/firstboot-" "wizard-secret\" on your {box_name}" msgstr "" "Introduzca la clave generada en la instalación de FreedomBox. También puede " -"obtenerla del archivo /var/lib/plinth/firstboot-wizard-secret" +"obtenerla con el comando \"sudo cat /var/lib/plinth/firstboot-wizard-secret\"" +" en su {box_name}" #: plinth/modules/first_boot/forms.py:34 msgid "Firstboot Wizard Secret" -msgstr "" +msgstr "Ayudante de clave de primer arranque" #: plinth/modules/first_boot/templates/firstboot_complete.html:26 msgid "Setup Complete!" @@ -1652,23 +1628,17 @@ msgid "Read-write access to Git repositories" msgstr "Acceso de lectura y escritura para repositorios Git" #: plinth/modules/gitweb/forms.py:59 -#, fuzzy -#| msgid "Invalid repository name." msgid "Invalid repository URL." -msgstr "Nombre de repositorio no válido." +msgstr "URL de repositorio no válida." #: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Nombre de repositorio no válido." #: plinth/modules/gitweb/forms.py:77 -#, fuzzy -#| msgid "" -#| "Repository path is neither empty nor is an existing backups repository." msgid "Name of a new repository or URL to import an existing repository." msgstr "" -"La ruta del repositorio ni está vacía ni es un repositorio de copias de " -"seguridad." +"Nombre de un nuevo repositorio o URL para importar un repositorio existente." #: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" @@ -1726,7 +1696,7 @@ msgstr "Eliminar repositorio %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_configure.html:83 msgid "Cloning..." -msgstr "" +msgstr "Clonando..." #: plinth/modules/gitweb/templates/gitweb_configure.html:89 #, python-format @@ -1753,10 +1723,8 @@ msgid "Repository created." msgstr "Repositorio creado." #: plinth/modules/gitweb/views.py:86 -#, fuzzy -#| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." -msgstr "Ha habido un error en la configuración." +msgstr "Ha habido un error al crear el repositorio." #: plinth/modules/gitweb/views.py:99 msgid "Repository edited." @@ -2209,22 +2177,14 @@ msgid "Wiki and Blog" msgstr "Wiki y Blog" #: plinth/modules/ikiwiki/__init__.py:46 -#, fuzzy -#| 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. When enabled, the blogs and " -#| "wikis will be available at /ikiwiki (once " -#| "created)." 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 "" "ikiwiki es una sencilla aplicación de wiki y blog. Soporta algunos lenguajes " -"de marcado, Markdown incluido, y funcionalidades comunes de los blogs tal " -"como comentarios o fuentes RSS. Cuando está activo los blogs y wikis están " -"accesibles en /ikiwiki (una vez hayan sido creados)." +"de marcado, Markdown incluido, y funcionalidades comunes de los blogs tal " +"como comentarios o fuentes RSS." #: plinth/modules/ikiwiki/__init__.py:50 #, python-brace-format @@ -3107,24 +3067,17 @@ msgid "Name Services" msgstr "Servicios de nombres" #: plinth/modules/names/__init__.py:45 -#, fuzzy, python-brace-format -#| msgid "" -#| "Name Services provides an overview of the ways {box_name} can be reached " -#| "from the public Internet: domain name, Tor hidden service, and Pagekite. " -#| "For each type of name, it is shown whether the HTTP, HTTPS, and SSH " -#| "services are enabled or disabled for incoming connections through the " -#| "given name." +#, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " "from the public Internet: domain name, Tor onion service, and Pagekite. For " "each type of name, it is shown whether the HTTP, HTTPS, and SSH services are " "enabled or disabled for incoming connections through the given name." msgstr "" -"«Name Services» (servicios de nombre) proporciona un resumen de las maneras " -"que {box_name} puede ser accedido desde la internet pública: nombre de " -"dominio, servicio oculto de Tor y Pagekite. Para cada tipo de nombre se " -"muestra si los servicios HTTP, HTTPS y SSH están activados o desactivados " -"para las conexiones entrantes." +"«Name Services» (servicios de nombre) proporciona un resumen de cómo " +"{box_name} puede ser accedido desde la Internet pública: nombre de dominio, " +"servicio de Tor onion. Para cada tipo de nombre se muestra si los servicios " +"HTTP, HTTPS y SSH están activos o no para las conexiones entrantes." #: plinth/modules/names/components.py:27 msgid "All" @@ -3784,7 +3737,7 @@ msgstr "Activar servidor OpenVPN" #: plinth/modules/openvpn/manifest.py:63 msgid "TunnelBlick" -msgstr "" +msgstr "TunnelBlick" #: plinth/modules/openvpn/templates/openvpn.html:42 #, python-format @@ -3822,13 +3775,7 @@ msgid "Profile" msgstr "Perfil" #: plinth/modules/openvpn/templates/openvpn.html:90 -#, fuzzy, python-format -#| msgid "" -#| "To connect to %(box_name)s's VPN, you need to download a profile and feed " -#| "it to an OpenVPN client on your mobile or desktop machine. OpenVPN " -#| "Clients are available for most platforms. See the manual page " -#| "on recommended clients and instructions on how to configure them." +#, python-format msgid "" "To connect to %(box_name)s's VPN, you need to download a profile and feed it " "to an OpenVPN client on your mobile or desktop machine. OpenVPN Clients are " @@ -3837,9 +3784,9 @@ msgid "" msgstr "" "Para conectar a la VPN de %(box_name)s necesita descargar un perfil y " "añadirlo a un cliente OpenVPN en su ordenador de escritorio o móvil. Hay " -"clientes OpenVPN para la mayoría de las plataformas. Consulte la documentación sobre los clientes recomendados y cómo configurarlos." +"clientes OpenVPN para la mayoría de las plataformas. Haga clic en \"" +"Aprender más...\" para información sobre los clientes recomendados y cómo " +"configurarlos." #: plinth/modules/openvpn/templates/openvpn.html:100 #, python-format @@ -3913,13 +3860,7 @@ msgid "Your ISP limits incoming connections." msgstr "Su proveedor de servicios limita las conexiones entrantes." #: plinth/modules/pagekite/__init__.py:61 -#, fuzzy, python-brace-format -#| msgid "" -#| "PageKite works around NAT, firewalls and IP-address limitations by using " -#| "a combination of tunnels and reverse proxies. You can use any pagekite " -#| "service provider, for example pagekite." -#| "net. In future it might be possible to use your buddy's {box_name} " -#| "for this." +#, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " "combination of tunnels and reverse proxies. You can use any pagekite service " @@ -3928,8 +3869,9 @@ msgid "" msgstr "" "PageKite evita NAT, firewalls y limitaciones de direcciones IP mediante una " "combinación de túneles y proxys inversos. Puede elegir cualquier proveedor " -"de servicios pagekite, por ejemplo pagekite." -"net. En el futuro será posible usar su amigable {box_name} para esto." +"de servicios pagekite, por ejemplo pagekite.net. En el futuro será posible usar su amigable {box_name} " +"para esto." #: plinth/modules/pagekite/__init__.py:87 msgid "PageKite Domain" @@ -4037,10 +3979,8 @@ msgstr "Servicios personalizados" #: plinth/modules/pagekite/templates/pagekite_configure.html:50 #: plinth/modules/pagekite/templates/pagekite_configure.html:52 -#, fuzzy -#| msgid "Custom Services" msgid "Add Custom Service" -msgstr "Servicios personalizados" +msgstr "Añadir servicios personalizados" #: plinth/modules/pagekite/templates/pagekite_configure.html:57 msgid "Existing custom services" @@ -4056,10 +3996,8 @@ msgid "Delete this service" msgstr "Eliminar este servicio" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:30 -#, fuzzy -#| msgid "Added custom service" msgid "Add custom PageKite service" -msgstr "Servicio personalizado añadido" +msgstr "Añadir servicio PageKite personalizado" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:32 msgid "" @@ -4447,14 +4385,6 @@ msgstr "" "csipsimple\">CsipSimple (para teléfonos Android)." #: plinth/modules/repro/__init__.py:55 -#, fuzzy -#| msgid "" -#| "Note: Before using repro, domains and users will need " -#| "to be configured using the web-based " -#| "configuration panel. Users in the admin group will be able " -#| "to log in to the repro configuration panel. After setting the domain, it " -#| "is required to restart the repro service. Disable the service and re-" -#| "enable it." msgid "" "Note: Before using repro, domains and users will need to " "be configured using the Nota: Antes de usar repro tiene que configurar los dominios " -"y usuarias/os con el Panel web de " -"configuración. Usuarias/os en el grupo admin podrán acceder al " -"panel de configuración. Después de configurar el dominio es necesario " -"reiniciar el servicio repro: desactive el servicio y vuélvalo a activar." +"y usuarias/os con el Panel web de configuración. Usuarias/os en el grupo " +"admin podrán acceder al panel de configuración. Después de " +"configurar el dominio es necesario reiniciar el servicio repro: desactive el " +"servicio y vuélvalo a activar." #: plinth/modules/repro/manifest.py:30 msgid "Jitsi Meet" @@ -4545,13 +4476,6 @@ msgstr "" "organización de carpetas, búsqueda de mensajes y corrección ortográfica." #: plinth/modules/roundcube/__init__.py:45 -#, fuzzy -#| msgid "" -#| "You can access Roundcube from /roundcube. " -#| "Provide the username and password of the email account you wish to access " -#| "followed by the domain name of the IMAP server for your email provider, " -#| "like imap.example.com. For IMAP over SSL (recommended), " -#| "fill the server field like imaps://imap.example.com." msgid "" "You can access Roundcube from /roundcube. Provide the username and password of the email account " @@ -4560,12 +4484,12 @@ msgid "" "(recommended), fill the server field like imaps://imap.example.com." msgstr "" -"Puede acceder a Roundcube en /roundcube/. Debe " -"facilitar el nombre de usuaria/o y la clave de la cuenta de correo a la que " -"desea acceder, además del nombre de dominio del servidor IMAP de su " -"proveedor, por ejemplo imap.ejemplo.com. Para IMAP sobre SSL " -"(recomendado) rellene el campo del servidor como imaps://imap.ejemplo." -"com." +"Puede acceder a Roundcube en roundcube. Debe facilitar el nombre de usuaria/o y la clave de la " +"cuenta de correo a la que desea acceder, además del nombre de dominio del " +"servidor IMAP de su proveedor, por ejemplo imap.ejemplo.com. " +"Para IMAP sobre SSL (recomendado) rellene el campo del servidor como " +"imaps://imap.ejemplo.com." #: plinth/modules/roundcube/__init__.py:51 msgid "" @@ -4585,13 +4509,15 @@ msgstr "" #: plinth/modules/samba/__init__.py:43 msgid "Samba" -msgstr "" +msgstr "Samba" #: plinth/modules/samba/__init__.py:48 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" +"Samba permite compartir archivos y carpetas entre FreedomBox y otras " +"computadoras en su red local." #: plinth/modules/samba/__init__.py:51 #, python-brace-format @@ -4600,22 +4526,26 @@ msgid "" "{hostname} shares are open to everyone in your local network and are " "accessible under Network section in the file manager on your computer." msgstr "" +"Tras instalarlo puede elegir qué disco se comparte. Los elementos " +"compartidos en {hostname} son accesibles para cualquier persona en su red " +"local, y pueden encontrarse en la sección \"Red local\" de su gestor de " +"archivos." #: plinth/modules/samba/__init__.py:57 msgid "Access shared folders from inside the server" -msgstr "" +msgstr "Acceso a carpetas compartidas desde el servidor" #: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" msgid "Select disks for sharing" -msgstr "Seleccionar Disco o Partición" +msgstr "Seleccionar discos para compartir" #: plinth/modules/samba/templates/samba.html:40 msgid "" "Note: only specially created directory will be shared on selected disks, not " "the whole disk." msgstr "" +"Nota: Solo se compartirá una carpeta especialmente creada para ello, no se " +"compartirá el disco completo." #: plinth/modules/samba/templates/samba.html:50 #: plinth/modules/storage/templates/storage.html:41 @@ -4634,51 +4564,43 @@ msgstr "Usado" #: plinth/modules/samba/templates/samba.html:76 msgid "vfat partitions are not supported" -msgstr "" +msgstr "Las particiones vfat no están soportadas" #: plinth/modules/samba/templates/samba.html:108 msgid "Shares configured but the disk is not available" -msgstr "" +msgstr "Compartir está configurado pero el disco no está disponible" #: plinth/modules/samba/templates/samba.html:110 msgid "If the disk is plugged back in, sharing will be automatically enabled." msgstr "" +"Si el disco se conecta de nuevo, los elementos compartidos estarán " +"accesibles automáticamente." #: plinth/modules/samba/templates/samba.html:115 -#, fuzzy -#| msgid "Share added." msgid "Share name" -msgstr "Compartición añadida." +msgstr "Nombre de compartición" #: plinth/modules/samba/templates/samba.html:116 -#, fuzzy -#| msgid "Actions" msgid "Action" -msgstr "Acciones" +msgstr "Acción" #: plinth/modules/samba/views.py:74 -#, fuzzy -#| msgid "Share deleted." msgid "Share enabled." -msgstr "Compartición eliminada." +msgstr "Compartición activada." #: plinth/modules/samba/views.py:79 -#, fuzzy, python-brace-format -#| msgid "Error ejecting device: {error_message}" +#, python-brace-format msgid "Error enabling share: {error_message}" -msgstr "Error al expulsar el dispositivo: {error_message}" +msgstr "Error al activar compartición: {error_message}" #: plinth/modules/samba/views.py:95 -#, fuzzy -#| msgid "Share edited." msgid "Share disabled." -msgstr "Compartición editada." +msgstr "Compartición desactivada." #: plinth/modules/samba/views.py:100 -#, fuzzy, python-brace-format -#| msgid "Error ejecting device: {error_message}" +#, python-brace-format msgid "Error disabling share: {error_message}" -msgstr "Error al expulsar el dispositivo: {error_message}" +msgstr "Error al desactivar compartición: {error_message}" #: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 msgid "Searx" @@ -4833,20 +4755,16 @@ msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli le permite guardar y compartir marcadores." #: plinth/modules/shaarli/__init__.py:40 -#, fuzzy -#| msgid "" -#| "When enabled, Shaarli will be available from /" -#| "shaarli path on the web server. Note that Shaarli only supports a " -#| "single user account, which you will need to setup on the initial visit." msgid "" "When enabled, Shaarli will be available from /shaarli path on the web server. Note that Shaarli " "only supports a single user account, which you will need to setup on the " "initial visit." msgstr "" -"Cuando se activa Shaarli está disponible en la dirección /shaarli de su servidor. Note que Shaarli solo soporta una cuenta de " -"usuaria/o, que debe configurar en el primer acceso." +"Cuando se activa Shaarli está disponible en la dirección /shaarli de su servidor. Note que Shaarli " +"solo soporta una cuenta de usuaria/o, que debe configurar en el primer " +"acceso." #: plinth/modules/shadowsocks/__init__.py:35 msgid "Shadowsocks" @@ -5266,10 +5184,8 @@ msgstr "" "servicios a través de esas conexiones." #: plinth/modules/ssh/forms.py:30 -#, fuzzy -#| msgid "Use HTTP basic authentication" msgid "Disable password authentication" -msgstr "Usar autenticación básica de HTTP" +msgstr "Desactivar autentificación de clave" #: plinth/modules/ssh/forms.py:31 msgid "" @@ -5277,6 +5193,9 @@ msgid "" "setup SSH keys in your administrator user account before enabling this " "option." msgstr "" +"Mejora la seguridad previniendo adivinar la clave. Asegúrese de que ha " +"configurado las claves SSH en su cuenta de administrador antes de activar " +"esta opción." #: plinth/modules/ssh/templates/ssh.html:26 msgid "Server Fingerprints" @@ -5300,13 +5219,11 @@ msgstr "Huella digital" #: plinth/modules/ssh/views.py:66 msgid "SSH authentication with password disabled." -msgstr "" +msgstr "Acceso SSH con clave desactivado." #: plinth/modules/ssh/views.py:69 -#, fuzzy -#| msgid "Authentication to remote server failed." msgid "SSH authentication with password enabled." -msgstr "Ha fallado la autenticación en el servidor remoto." +msgstr "Acceso SSH con clave activado." #: plinth/modules/sso/__init__.py:30 msgid "Single Sign On" @@ -5608,10 +5525,8 @@ msgstr "" "protección cuando navega por la red." #: plinth/modules/tor/__init__.py:80 -#, fuzzy -#| msgid "Tor Hidden Service" msgid "Tor Onion Service" -msgstr "Servicio de ocultación Tor" +msgstr "Servicio Tor Onion" #: plinth/modules/tor/__init__.py:84 msgid "Tor Socks Proxy" @@ -5714,23 +5629,17 @@ msgstr "" "este nodo. Ayuda a otros usuarios a esquivar la censura." #: plinth/modules/tor/forms.py:128 -#, fuzzy -#| msgid "Enable Tor Hidden Service" msgid "Enable Tor Onion Service" -msgstr "Activar el servicio de ocultación de Tor" +msgstr "Activar el servicio Tor Onion" #: plinth/modules/tor/forms.py:131 -#, fuzzy, python-brace-format -#| msgid "" -#| "A hidden service will allow {box_name} to provide selected services (such " -#| "as wiki or chat) without revealing its location. Do not use this for " -#| "strong anonymity yet." +#, python-brace-format msgid "" "An onion service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -"Un servicio de ocultación permite a su {box_name} proporcionar determinados " +"Un servicio Onion permite a su {box_name} proporcionar determinados " "servicios (como wiki o chat) sin revelar su localización. No lo emplee para " "un anonimato fuerte." @@ -5766,10 +5675,8 @@ msgid "Tor configuration is being updated" msgstr "La configuración de Tor está actualizándose" #: plinth/modules/tor/templates/tor.html:50 -#, fuzzy -#| msgid "Hidden Service" msgid "Onion Service" -msgstr "Servicio de ocultación" +msgstr "Servicio Onion" #: plinth/modules/tor/templates/tor.html:52 msgid "Ports" @@ -5847,32 +5754,23 @@ msgstr "" "aplicación de escritorio en la medida de lo posible." #: plinth/modules/ttrss/__init__.py:52 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Tiny Tiny RSS will be available from /" -#| "tt-rss path on the web server. It can be accessed by any user with a {box_name} login." +#, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -"Cuando está activado, Tiny Tiny RSS estará disponible en la ruta /tt-rss en el servidor web. Cualquier persona con una cuenta de acceso en {box_name} puede " -"acceder." +"Cuando está activado, Tiny Tiny RSS estará disponible para cualquier persona con una cuenta de acceso en {box_name}." #: plinth/modules/ttrss/__init__.py:56 -#, fuzzy -#| msgid "" -#| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " -#| "/tt-rss-app for connecting." msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for " "connecting." msgstr "" "Cuando emplee una aplicación de móvil o de escritorio para Tiny Tiny RSS, " -"use la URL /tt-rss-app para conectar." +"use la URL /tt-rss-app" +" para conectar." #: plinth/modules/ttrss/__init__.py:63 msgid "Read and subscribe to news feeds" From 078abb5fa38926ab8956b4f0fae0ebd1c3e3f546 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Tue, 10 Dec 2019 23:19:48 +0200 Subject: [PATCH 28/42] users: Fix functional tests changing the language feature Closes #1674 Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- functional_tests/support/system.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functional_tests/support/system.py b/functional_tests/support/system.py index bafbb3ac1..b8be64996 100644 --- a/functional_tests/support/system.py +++ b/functional_tests/support/system.py @@ -95,7 +95,8 @@ def set_language(browser, language_code): def check_language(browser, language_code): nav_to_module(browser, 'config') - return browser.title == config_page_title_language_map[language_code] + return browser.find_by_css('.header-bar').first.find_by_tag( + 'h2').first.value == config_page_title_language_map[language_code] def delete_all_snapshots(browser): From 32e348a9792813b94f606020bc0bc0525bc93a29 Mon Sep 17 00:00:00 2001 From: Thomas Vincent Date: Wed, 11 Dec 2019 19:09:18 +0000 Subject: [PATCH 29/42] Translated using Weblate (French) Currently translated at 100.0% (1115 of 1115 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index ca75e8338..61f15c4f1 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-02 17:30-0500\n" -"PO-Revision-Date: 2019-12-05 22:05+0000\n" -"Last-Translator: Fred \n" +"PO-Revision-Date: 2019-12-12 20:05+0000\n" +"Last-Translator: Thomas Vincent \n" "Language-Team: French \n" "Language: fr\n" @@ -2547,8 +2547,8 @@ msgid "" "\">available clients for mobile, desktop and the web. Riot client is recommended." msgstr "" -"Pour communiquer, vous pouvez utiliser le les clients disponible pour mobile, desktop et le web. Le " +"Pour communiquer, vous pouvez utiliser les clients disponibles pour mobile, desktop et le web. Le " "client Riot est recommandé." #: plinth/modules/matrixsynapse/forms.py:29 From 390e041a147c0ca188a9eca36ab68c27bd3822f3 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Thu, 12 Dec 2019 16:21:27 +0200 Subject: [PATCH 30/42] app: Fix app checkbox status change functional tests Fixes #1733 Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- functional_tests/support/application.py | 55 ++++++++++++++----------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/functional_tests/support/application.py b/functional_tests/support/application.py index 060bbd406..8086bcd58 100644 --- a/functional_tests/support/application.py +++ b/functional_tests/support/application.py @@ -98,30 +98,40 @@ def is_installed(browser, app_name): return not bool(install_button) -def _change_status(browser, app_name, change_status_to='enabled', - checkbox_id=None): - interface.nav_to_module(browser, get_app_module(app_name)) - checkbox_id = checkbox_id or get_app_checkbox_id(app_name) - checkbox = browser.find_by_id(checkbox_id) +def _change_app_status(browser, app_name, change_status_to='enabled'): + """Enable or disable application.""" button = browser.find_by_id('app-toggle-button') + checkbox_id = get_app_checkbox_id(app_name) + checkbox = browser.find_by_id(checkbox_id) if button: if checkbox.checked and change_status_to == 'disabled' or ( not checkbox.checked and change_status_to == 'enabled'): interface.submit(browser, element=button) else: - checkbox.check( - ) if change_status_to == 'enabled' else checkbox.uncheck() - interface.submit(browser, form_class='form-configuration') + _change_status(browser, app_name, checkbox_id, change_status_to) + + if app_name in apps_with_loaders: + wait_for_config_update(browser, app_name) + + +def _change_status(browser, app_name, checkbox_id, change_status_to='enabled'): + """Change checkbox status.""" + checkbox = browser.find_by_id(checkbox_id) + checkbox.check() if change_status_to == 'enabled' else checkbox.uncheck() + interface.submit(browser, form_class='form-configuration') + if app_name in apps_with_loaders: wait_for_config_update(browser, app_name) def enable(browser, app_name): - _change_status(browser, app_name, 'enabled') + interface.nav_to_module(browser, get_app_module(app_name)) + _change_app_status(browser, app_name, 'enabled') def disable(browser, app_name): - _change_status(browser, app_name, 'disabled') + interface.nav_to_module(browser, get_app_module(app_name)) + _change_app_status(browser, app_name, 'disabled') def wait_for_config_update(browser, app_name): @@ -270,29 +280,27 @@ def verify_inaccessible_share(browser, name): def enable_mediawiki_public_registrations(browser): """Enable public registrations in MediaWiki.""" interface.nav_to_module(browser, 'mediawiki') - _change_status(browser, 'mediawiki', 'enabled', - checkbox_id='id_enable_public_registrations') + _change_status(browser, 'mediawiki', 'id_enable_public_registrations', + 'enabled') def disable_mediawiki_public_registrations(browser): """Enable public registrations in MediaWiki.""" interface.nav_to_module(browser, 'mediawiki') - _change_status(browser, 'mediawiki', 'disabled', - checkbox_id='id_enable_public_registrations') + _change_status(browser, 'mediawiki', 'id_enable_public_registrations', + 'disabled') def enable_mediawiki_private_mode(browser): """Enable public registrations in MediaWiki.""" interface.nav_to_module(browser, 'mediawiki') - _change_status(browser, 'mediawiki', 'enabled', - checkbox_id='id_enable_private_mode') + _change_status(browser, 'mediawiki', 'id_enable_private_mode', 'enabled') def disable_mediawiki_private_mode(browser): """Enable public registrations in MediaWiki.""" interface.nav_to_module(browser, 'mediawiki') - _change_status(browser, 'mediawiki', 'disabled', - checkbox_id='id_enable_private_mode') + _change_status(browser, 'mediawiki', 'id_enable_private_mode', 'disabled') def set_mediawiki_admin_password(browser, password): @@ -305,15 +313,13 @@ def set_mediawiki_admin_password(browser, password): def enable_ejabberd_message_archive_management(browser): """Enable Message Archive Management in Ejabberd.""" interface.nav_to_module(browser, 'ejabberd') - _change_status(browser, 'ejabberd', 'enabled', - checkbox_id='id_MAM_enabled') + _change_status(browser, 'ejabberd', 'id_MAM_enabled', 'enabled') def disable_ejabberd_message_archive_management(browser): """Enable Message Archive Management in Ejabberd.""" interface.nav_to_module(browser, 'ejabberd') - _change_status(browser, 'ejabberd', 'disabled', - checkbox_id='id_MAM_enabled') + _change_status(browser, 'ejabberd', 'id_MAM_enabled', 'disabled') def ejabberd_add_contact(browser): @@ -401,9 +407,8 @@ def _gitweb_get_repo_url(repo, with_auth): if with_auth: password = config['DEFAULT']['password'] - return '{0}://{1}:{2}@{3}/gitweb/{4}'.format(scheme, - config['DEFAULT']['username'], - password, url, repo) + return '{0}://{1}:{2}@{3}/gitweb/{4}'.format( + scheme, config['DEFAULT']['username'], password, url, repo) @contextlib.contextmanager From 656988cc546e569f794365b2c9781defac967082 Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 10 Dec 2019 12:03:19 +0000 Subject: [PATCH 31/42] cockpit: extend apps description with access info Reviewed-by: James Valleroy --- plinth/modules/cockpit/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plinth/modules/cockpit/__init__.py b/plinth/modules/cockpit/__init__.py index 1e4e8eb7d..a37547ae4 100644 --- a/plinth/modules/cockpit/__init__.py +++ b/plinth/modules/cockpit/__init__.py @@ -56,7 +56,11 @@ description = [ format_lazy( _('It can be accessed by any user on ' '{box_name} belonging to the admin group.'), - box_name=_(cfg.box_name), users_url=reverse_lazy('users:index')) + box_name=_(cfg.box_name), users_url=reverse_lazy('users:index')), + format_lazy( + _('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.')), ] manual_page = 'Cockpit' From 4805e01929a60c5d32e67b743da12486e1a966ec Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 10 Dec 2019 13:54:26 +0000 Subject: [PATCH 32/42] cockpit: add list of valid urls to access the app. Closes #1649 Reviewed-by: James Valleroy --- plinth/modules/cockpit/__init__.py | 2 + plinth/modules/cockpit/templates/cockpit.html | 39 ++++++++++++++++ plinth/modules/cockpit/urls.py | 11 +---- plinth/modules/cockpit/views.py | 46 +++++++++++++++++++ 4 files changed, 89 insertions(+), 9 deletions(-) create mode 100644 plinth/modules/cockpit/templates/cockpit.html create mode 100644 plinth/modules/cockpit/views.py diff --git a/plinth/modules/cockpit/__init__.py b/plinth/modules/cockpit/__init__.py index a37547ae4..e303f7761 100644 --- a/plinth/modules/cockpit/__init__.py +++ b/plinth/modules/cockpit/__init__.py @@ -44,6 +44,8 @@ managed_packages = ['cockpit'] name = _('Cockpit') +icon_filename = 'cockpit' + short_description = _('Server Administration') description = [ diff --git a/plinth/modules/cockpit/templates/cockpit.html b/plinth/modules/cockpit/templates/cockpit.html new file mode 100644 index 000000000..1274721f1 --- /dev/null +++ b/plinth/modules/cockpit/templates/cockpit.html @@ -0,0 +1,39 @@ +{% extends "app.html" %} +{% comment %} +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +{% endcomment %} +{% load bootstrap %} +{% load i18n %} + +{% block status %} + {{ block.super }} + +

{% trans "Access" %}

+ +

+ {% blocktrans trimmed %} + Cockpit will only work when accessed using the following URLs. + {% endblocktrans %} +

+ +
    + {% for url_ in urls %} +
  1. {{ url_ }}
  2. + {% endfor %} +
+{% endblock %} diff --git a/plinth/modules/cockpit/urls.py b/plinth/modules/cockpit/urls.py index 2abb14456..78ef23fae 100644 --- a/plinth/modules/cockpit/urls.py +++ b/plinth/modules/cockpit/urls.py @@ -20,15 +20,8 @@ URLs for Cockpit module. from django.conf.urls import url -from plinth.modules import cockpit -from plinth.views import AppView +from plinth.modules.cockpit.views import CockpitAppView urlpatterns = [ - url( - r'^sys/cockpit/$', - AppView.as_view(app_id='cockpit', name=cockpit.name, - diagnostics_module_name='cockpit', - description=cockpit.description, - show_status_block=True, clients=cockpit.clients, - manual_page=cockpit.manual_page), name='index'), + url(r'^sys/cockpit/$', CockpitAppView.as_view(), name='index'), ] diff --git a/plinth/modules/cockpit/views.py b/plinth/modules/cockpit/views.py new file mode 100644 index 000000000..a7e7b0d2e --- /dev/null +++ b/plinth/modules/cockpit/views.py @@ -0,0 +1,46 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Views for the Cockpit module +""" +from plinth.views import AppView +from plinth.modules.cockpit import ( + name, + description, + clients, + manual_page, + icon_filename, +) +from plinth.modules.cockpit.utils import get_origin_domains, load_augeas + + +class CockpitAppView(AppView): + app_id = 'cockpit' + name = name + description = description + diagnostics_module_name = 'cockpit' + show_status_block = True + clients = clients + manual_page = manual_page + template_name = 'cockpit.html' + icon_filename = icon_filename + + def get_context_data(self, *args, **kwargs): + context = super().get_context_data(**kwargs) + context['urls'] = get_origin_domains(load_augeas()) + + return context From 8d51adcc05c26630f63447787d3d0ace9ff9770d Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 15 Dec 2019 08:17:46 -0500 Subject: [PATCH 33/42] cockpit: Filter out localhost URLs from displayed access list Signed-off-by: James Valleroy --- plinth/modules/cockpit/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plinth/modules/cockpit/views.py b/plinth/modules/cockpit/views.py index a7e7b0d2e..98fa8e4dd 100644 --- a/plinth/modules/cockpit/views.py +++ b/plinth/modules/cockpit/views.py @@ -41,6 +41,7 @@ class CockpitAppView(AppView): def get_context_data(self, *args, **kwargs): context = super().get_context_data(**kwargs) - context['urls'] = get_origin_domains(load_augeas()) + urls = get_origin_domains(load_augeas()) + context['urls'] = [url for url in urls if 'localhost' not in url] return context From ea48f9a74bf51de87cc5230617e05f4ff0e11fe1 Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Thu, 5 Dec 2019 17:13:26 +0300 Subject: [PATCH 34/42] storage: Directory selection form and validator Directory selection allows to: - select from default directory - select from available Samba shares - specify subdirectory - insert custom directory - directory validator checks: path exists, is directory, is readable, is writable - samba: action script: include share path in share list - create freedombox-share group inside users module instead of samba module Closes #1703 Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- actions/samba | 5 +- actions/storage | 22 +++++ plinth/modules/samba/__init__.py | 3 +- plinth/modules/storage/forms.py | 161 +++++++++++++++++++++++++++++++ plinth/modules/users/__init__.py | 17 +++- 5 files changed, 203 insertions(+), 5 deletions(-) create mode 100644 plinth/modules/storage/forms.py diff --git a/actions/samba b/actions/samba index 88fcbdcc7..5545fa52e 100755 --- a/actions/samba +++ b/actions/samba @@ -163,9 +163,10 @@ def _get_shares(): config = configparser.ConfigParser() config.read_string(output.decode()) for name in config.sections(): - mount_point = _get_mount_point(config[name]['path']) + path = config[name]['path'] + mount_point = _get_mount_point(path) mount_point = os.path.normpath(mount_point) - shares.append(dict(name=name, mount_point=mount_point)) + shares.append(dict(name=name, mount_point=mount_point, path=path)) return shares diff --git a/actions/storage b/actions/storage index d156220a4..95925708f 100755 --- a/actions/storage +++ b/actions/storage @@ -21,6 +21,7 @@ Configuration helper for disks manager. import argparse import json +import os import re import subprocess import sys @@ -51,6 +52,14 @@ def parse_arguments(): subparsers.add_parser('usage-info', help='Get information about disk space usage') + subparser = subparsers.add_parser('validate-directory', + help='Validate a directory') + subparser.add_argument('--path', help='Path of the directory', + required=True) + subparser.add_argument('--check-writable', required=False, default=False, + action='store_true', + help='Check that the directory is writable') + subparsers.required = True return parser.parse_args() @@ -316,6 +325,19 @@ def subcommand_usage_info(_): subprocess.run(command, check=True) +def subcommand_validate_directory(arguments): + """Validate a directory""" + directory = arguments.path + if not os.path.exists(directory): + print('ValidationError: 1') + if not os.path.isdir(directory): + print('ValidationError: 2') + if not os.access(directory, os.R_OK): + print('ValidationError: 3') + if arguments.check_writable and not os.access(directory, os.W_OK): + print('ValidationError: 4') + + def main(): """Parse arguments and perform all duties.""" arguments = parse_arguments() diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index 697c21e2b..9524ed27f 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -28,7 +28,7 @@ from plinth import action_utils, actions from plinth import app as app_module from plinth import frontpage, menu from plinth.daemon import Daemon -from plinth.modules.users import create_group, register_group +from plinth.modules.users import register_group from plinth.modules.firewall.components import Firewall from plinth.utils import format_lazy @@ -106,7 +106,6 @@ def init(): def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) - create_group('freedombox-share') helper.call('post', actions.superuser_run, 'samba', ['setup']) helper.call('post', app.enable) diff --git a/plinth/modules/storage/forms.py b/plinth/modules/storage/forms.py new file mode 100644 index 000000000..17a0ec7a1 --- /dev/null +++ b/plinth/modules/storage/forms.py @@ -0,0 +1,161 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Forms for directory selection. +""" + +import json +import os + +from django import forms +from django.core.exceptions import ValidationError +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions, module_loader +from plinth.forms import AppForm +from plinth.modules import storage + + +def get_available_samba_shares(): + """Get available samba shares.""" + available_shares = [] + if is_module_enabled('samba'): + samba_shares = json.loads( + actions.superuser_run('samba', ['get-shares'])) + if samba_shares: + disks = storage.get_disks() + for share in samba_shares: + for disk in disks: + if share['mount_point'] == disk['mount_point']: + available_shares.append(share) + break + return available_shares + + +def is_module_enabled(name): + """Check whether a module is enabled.""" + if name in module_loader.loaded_modules: + module = module_loader.loaded_modules['samba'] + if module.setup_helper.get_state( + ) != 'needs-setup' and module.app.is_enabled(): + return True + + return False + + +class DirectoryValidator: + username = None + check_writable = False + add_user_to_share_group = False + service_to_restart = None + + def __init__(self, username=None, check_writable=None): + if username is not None: + self.username = username + if check_writable is not None: + self.check_writable = check_writable + + def __call__(self, value): + """Validate a directory.""" + if not value.startswith('/'): + raise ValidationError(_('Invalid directory name.'), 'invalid') + + command = ['validate-directory', '--path', value] + if self.check_writable: + command.append('--check-writable') + + if self.username: + output = actions.run_as_user('storage', command, + become_user=self.username) + else: + output = actions.run('storage', command) + + if 'ValidationError' in output: + error_nr = int(output.strip().split()[1]) + if error_nr == 1: + raise ValidationError( + _('Directory does not exist.'), 'invalid') + elif error_nr == 2: + raise ValidationError(_('Path is not a directory.'), 'invalid') + elif error_nr == 3: + raise ValidationError( + _('Directory is not readable by the user.'), 'invalid') + elif error_nr == 4: + raise ValidationError( + _('Directory is not writable by the user.'), 'invalid') + + +class DirectorySelectForm(AppForm): + """Directory selection form.""" + storage_dir = forms.ChoiceField(choices=[], label=_('Directory'), + required=True) + storage_subdir = forms.CharField( + label=_('Subdirectory (optional)'), required=False) + + def __init__(self, title=None, default='/', validator=DirectoryValidator, + *args, **kwargs): + super().__init__(*args, **kwargs) + if title: + self.fields['storage_dir'].label = title + self.validator = validator + self.default = os.path.normpath(default) + self.set_form_data() + + def clean(self): + """Clean and validate form data.""" + if self.cleaned_data['is_enabled'] or not self.initial['is_enabled']: + storage_dir = self.cleaned_data['storage_dir'] + storage_subdir = self.cleaned_data['storage_subdir'] + if storage_dir != '/': + storage_subdir = storage_subdir.lstrip('/') + storage_path = os.path.realpath( + os.path.join(storage_dir, storage_subdir)) + if self.validator: + self.validator(storage_path) + self.cleaned_data.update({'storage_path': storage_path}) + + def get_initial(self, choices): + """Get initial form data.""" + initial_selection = () + subdir = '' + storage_path = self.initial['storage_path'] + for choice in choices: + if storage_path.startswith(choice[0]): + initial_selection = choice + subdir = storage_path.split(choice[0], 1)[1].strip('/') + if choice[0] == '/': + subdir = '/' + subdir + break + return (initial_selection, subdir) + + def set_form_data(self): + """Set initial form data.""" + choices = [] + if self.default: + choices = choices + [(self.default, '{0}: {1}'.format( + _('Default'), self.default))] + available_shares = get_available_samba_shares() + for share in available_shares: + choices = choices + [(share['path'], '{0} ({1}): {2}'.format( + _('Samba share'), share['name'], share['path']))] + choices = choices + [('/', _('Other directory (specify below)'))] + + initial_value, subdir = self.get_initial(choices) + + self.fields['storage_dir'].choices = choices + self.initial['storage_dir'] = initial_value + self.initial['storage_subdir'] = subdir diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index b43087580..ae869049e 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -18,6 +18,7 @@ FreedomBox app to manage users. """ +import grp import subprocess from django.utils.translation import ugettext_lazy as _ @@ -27,7 +28,7 @@ from plinth import app as app_module from plinth import cfg, menu from plinth.utils import format_lazy -version = 2 +version = 3 is_essential = True @@ -92,6 +93,7 @@ def setup(helper, old_version=None): if not old_version: helper.call('post', actions.superuser_run, 'users', ['first-setup']) helper.call('post', actions.superuser_run, 'users', ['setup']) + create_group('freedombox-share') def diagnose(): @@ -148,3 +150,16 @@ def get_last_admin_user(): return admin_users[0] return None + + +def add_user_to_share_group(username, service=None): + """Add user to the freedombox-share group.""" + try: + group_members = grp.getgrnam('freedombox-share').gr_mem + except KeyError: + group_members = [] + if username not in group_members: + actions.superuser_run( + 'users', ['add-user-to-group', username, 'freedombox-share']) + if service: + action_utils.service_restart(service) From 6bf6740b230411ab3eceb9d50a7f52fd9539c33e Mon Sep 17 00:00:00 2001 From: Veiko Aasa Date: Thu, 5 Dec 2019 17:29:49 +0300 Subject: [PATCH 35/42] transmission: New directory selection form - use new directory selection form (#1703) - add transmission-daemon to the freedombox-share group - pass only needed data to the template - do not change or validate download directory if transmission module is going to be disabled - yapf3 validation changes Signed-off-by: Veiko Aasa Reviewed-by: James Valleroy --- plinth/modules/transmission/__init__.py | 15 +++++++-------- plinth/modules/transmission/forms.py | 20 ++++++++++++-------- plinth/modules/transmission/views.py | 24 ++++++++++++------------ 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index 43b90cfcf..738c3c0c5 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -28,11 +28,11 @@ from plinth import frontpage, menu from plinth.daemon import Daemon from plinth.modules.apache.components import Webserver from plinth.modules.firewall.components import Firewall -from plinth.modules.users import register_group +from plinth.modules.users import register_group, add_user_to_share_group from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 2 +version = 3 managed_services = ['transmission-daemon'] @@ -74,11 +74,10 @@ class TransmissionApp(app_module.App): parent_url_name='apps') self.add(menu_item) - shortcut = frontpage.Shortcut('shortcut-transmission', name, - short_description=short_description, - icon=icon_filename, url='/transmission', - clients=clients, login_required=True, - allowed_groups=[group[0]]) + shortcut = frontpage.Shortcut( + 'shortcut-transmission', name, short_description=short_description, + icon=icon_filename, url='/transmission', clients=clients, + login_required=True, allowed_groups=[group[0]]) self.add(shortcut) firewall = Firewall('firewall-transmission', name, @@ -114,7 +113,7 @@ def setup(helper, old_version=None): helper.call('post', actions.superuser_run, 'transmission', ['merge-configuration'], input=json.dumps(new_configuration).encode()) - + add_user_to_share_group(reserved_usernames[0], managed_services[0]) helper.call('post', app.enable) diff --git a/plinth/modules/transmission/forms.py b/plinth/modules/transmission/forms.py index da8f8bcf8..a55877ea9 100644 --- a/plinth/modules/transmission/forms.py +++ b/plinth/modules/transmission/forms.py @@ -18,16 +18,20 @@ FreedomBox app for configuring Transmission. """ -from django import forms from django.utils.translation import ugettext_lazy as _ -from plinth.forms import AppForm +from plinth.modules.transmission import reserved_usernames +from plinth.modules.storage.forms import (DirectorySelectForm, + DirectoryValidator) -class TransmissionForm(AppForm): # pylint: disable=W0232 +class TransmissionForm(DirectorySelectForm): """Transmission configuration form""" - download_dir = forms.CharField( - label=_('Download directory'), - help_text=_('Directory where downloads are saved. If you change the ' - 'default directory, ensure that the new directory exists ' - 'and is writable by "debian-transmission" user.')) + + def __init__(self, *args, **kw): + validator = DirectoryValidator( + username=reserved_usernames[0], check_writable=True) + super(TransmissionForm, self).__init__( + title=_('Download directory'), + default='/var/lib/transmission-daemon/downloads/', + validator=validator, *args, **kw) diff --git a/plinth/modules/transmission/views.py b/plinth/modules/transmission/views.py index ac1ee7274..9794da18c 100644 --- a/plinth/modules/transmission/views.py +++ b/plinth/modules/transmission/views.py @@ -20,11 +20,11 @@ FreedomBox app for configuring Transmission Server. import json import logging +import os import socket from django.contrib import messages from django.utils.translation import ugettext as _ - from plinth import actions, views from plinth.modules import transmission @@ -50,10 +50,8 @@ class TransmissionAppView(views.AppView): configuration = actions.superuser_run('transmission', ['get-configuration']) configuration = json.loads(configuration) - status.update({ - key.translate(str.maketrans({'-': '_'})): value - for key, value in configuration.items() - }) + status['storage_path'] = os.path.normpath( + configuration['download-dir']) status['hostname'] = socket.gethostname() return status @@ -63,13 +61,15 @@ class TransmissionAppView(views.AppView): old_status = form.initial new_status = form.cleaned_data - if old_status['download_dir'] != new_status['download_dir']: - new_configuration = { - 'download-dir': new_status['download_dir'], - } + if new_status['is_enabled'] or not old_status['is_enabled']: + if old_status['storage_path'] != new_status['storage_path']: + new_configuration = { + 'download-dir': new_status['storage_path'], + } - actions.superuser_run('transmission', ['merge-configuration'], - input=json.dumps(new_configuration).encode()) - messages.success(self.request, _('Configuration updated')) + actions.superuser_run( + 'transmission', ['merge-configuration'], + input=json.dumps(new_configuration).encode()) + messages.success(self.request, _('Configuration updated')) return super().form_valid(form) From 83ca977dd4139db9b9b06053a4e6748b57f8b2f0 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sun, 15 Dec 2019 18:35:38 -0500 Subject: [PATCH 36/42] users: Use service action to restart share group service Signed-off-by: James Valleroy --- plinth/modules/users/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index ae869049e..ddb03765d 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -162,4 +162,4 @@ def add_user_to_share_group(username, service=None): actions.superuser_run( 'users', ['add-user-to-group', username, 'freedombox-share']) if service: - action_utils.service_restart(service) + actions.superuser_run('service', ['restart', service]) From ed16f035c2e02c9a0ae8a18aedb8f415027a18c5 Mon Sep 17 00:00:00 2001 From: /rgb Date: Mon, 16 Dec 2019 12:23:09 +0000 Subject: [PATCH 37/42] Translated using Weblate (German) Currently translated at 97.8% (1091 of 1115 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index 9b4055ef6..80ed0f3c7 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-02 17:30-0500\n" -"PO-Revision-Date: 2019-12-11 16:43+0000\n" +"PO-Revision-Date: 2019-12-16 22:57+0000\n" "Last-Translator: /rgb \n" "Language-Team: German \n" @@ -1831,9 +1831,9 @@ msgid "" "and a Tor relay, on a device that can replace your Wi-Fi router, so that " "your data stays with you." msgstr "" -"%(box_name)s%(box_name)s ist ein Gemeinschaftsprojekt für die Entwicklung, " -"Gestaltung und Verbreitung von persönlichen Servern mit freier Software für " -"die private, persönliche Kommunikation. Es handelt sich um eine " +"%(box_name)s ist ein Gemeinschaftsprojekt für die Entwicklung, Gestaltung " +"und Verbreitung von persönlichen Servern mit freier Software für die " +"private, persönliche Kommunikation. Es handelt sich um eine " "Netzwerkanwendung, die über eine Schnittstelle mit dem restlichen Internet " "verbunden ist, unter Berücksichtigung von geschützten Privatsphäre und " "Datensicherheit. Es stellt Anwendungen wie Blog, Wiki, Webseite, soziales " From dc37b14384a741670959e0fb6f0ecb413953990f Mon Sep 17 00:00:00 2001 From: adaragao Date: Sun, 15 Dec 2019 17:21:31 +0000 Subject: [PATCH 38/42] Translated using Weblate (Portuguese) Currently translated at 10.9% (122 of 1115 strings) --- plinth/locale/pt/LC_MESSAGES/django.po | 181 ++++++++++--------------- 1 file changed, 74 insertions(+), 107 deletions(-) diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index 793d39c9e..d75be5be7 100644 --- a/plinth/locale/pt/LC_MESSAGES/django.po +++ b/plinth/locale/pt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-02 17:30-0500\n" -"PO-Revision-Date: 2019-06-22 06:01+0000\n" +"PO-Revision-Date: 2019-12-16 22:57+0000\n" "Last-Translator: adaragao \n" "Language-Team: Portuguese \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.7\n" +"X-Generator: Weblate 3.10-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -103,12 +103,12 @@ msgstr "Erro a instalar a aplicação: {error}" #: plinth/modules/monkeysphere/templates/monkeysphere.html:88 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:60 msgid "Web Server" -msgstr "" +msgstr "Servidor Web" #: plinth/modules/apache/__init__.py:58 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" -msgstr "" +msgstr "{box_name} Interface Web (Plinth)" #: plinth/modules/avahi/__init__.py:46 msgid "Service Discovery" @@ -133,7 +133,7 @@ msgstr "" #: plinth/modules/avahi/__init__.py:77 msgid "Local Network Domain" -msgstr "" +msgstr "Domínio da Rede Local" #: plinth/modules/backups/__init__.py:40 msgid "Backups" @@ -173,27 +173,23 @@ msgid "Select the backup file you want to upload" msgstr "Selecione o ficheiro de backup que deseja carregar" #: plinth/modules/backups/forms.py:103 -#, fuzzy -#| msgid "Repository not found" msgid "Repository path format incorrect." -msgstr "Repositório não encontrado" +msgstr "Caminho de repositório com formato incorrecto." #: plinth/modules/backups/forms.py:110 -#, fuzzy, python-brace-format -#| msgid "Invalid archive name" +#, python-brace-format msgid "Invalid username: {username}" -msgstr "Nome de arquivo inválido" +msgstr "Nome de utilizador inválido: {username}" #: plinth/modules/backups/forms.py:120 -#, fuzzy, python-brace-format -#| msgid "Invalid domain name" +#, python-brace-format msgid "Invalid hostname: {hostname}" -msgstr "Nome de domínio inválido" +msgstr "Nome {hostname} inválido." #: plinth/modules/backups/forms.py:124 #, python-brace-format msgid "Invalid directory path: {dir_path}" -msgstr "" +msgstr "Caminho de directório inválido: {dir_path}" #: plinth/modules/backups/forms.py:130 msgid "Encryption" @@ -217,7 +213,7 @@ msgstr "Frase-Chave; Apenas necessária quando é usada encriptação." #: plinth/modules/backups/forms.py:139 msgid "Confirm Passphrase" -msgstr "Confirme Frase-Chave." +msgstr "Confirme Frase-Chave" #: plinth/modules/backups/forms.py:139 msgid "Repeat the passphrase." @@ -225,21 +221,19 @@ msgstr "Repetir a Frase-Chave." #: plinth/modules/backups/forms.py:150 msgid "The entered encryption passphrases do not match" -msgstr "As Frases-Chaves de encriptação inseridas não coincidem." +msgstr "As Frases-Chaves de encriptação inseridas não coincidem" #: plinth/modules/backups/forms.py:154 -#, fuzzy -#| msgid "Passphrase; Only needed when using encryption." msgid "Passphrase is needed for encryption." -msgstr "Frase-Chave; Apenas necessária quando é usada encriptação." +msgstr "Frase-Chave é necessária para encriptação." #: plinth/modules/backups/forms.py:189 msgid "Select Disk or Partition" -msgstr "" +msgstr "Seleccione Disco ou Partição" #: plinth/modules/backups/forms.py:190 msgid "Backups will be stored in the directory FreedomBoxBackups" -msgstr "" +msgstr "Os Backups serão gravados no directório FreedomBoxBackups" #: plinth/modules/backups/forms.py:199 msgid "SSH Repository Path" @@ -267,11 +261,11 @@ msgstr "" #: plinth/modules/backups/forms.py:224 msgid "Remote backup repository already exists." -msgstr "" +msgstr "O repositório remoto de backup já existe." #: plinth/modules/backups/forms.py:230 msgid "Select verified SSH public key" -msgstr "" +msgstr "Seleccione a chave pública de SSH verificada" #: plinth/modules/backups/repository.py:48 msgid "" @@ -300,10 +294,12 @@ msgstr "Acesso SSH recusado" #: plinth/modules/backups/repository.py:80 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" +"O caminho do repositório não está vazio, nem é um repositório de backups " +"existente." #: plinth/modules/backups/repository.py:154 msgid "Existing repository is not encrypted." -msgstr "" +msgstr "Repositório existente não está encriptado." #: plinth/modules/backups/repository.py:342 #, python-brace-format @@ -312,58 +308,40 @@ msgstr "{box_name} armazenamento" #: plinth/modules/backups/templates/backups.html:45 #: plinth/modules/backups/views.py:77 -#, fuzzy -#| msgid "New backup" msgid "Create a new backup" -msgstr "Novo backup" +msgstr "Criar novo backup" #: plinth/modules/backups/templates/backups.html:49 -#, fuzzy -#| msgid "New backup" msgid "Create Backup" -msgstr "Novo backup" +msgstr "Criar backup" #: plinth/modules/backups/templates/backups.html:52 -#, fuzzy -#| msgid "Exported backup archives" msgid "Upload and restore a backup archive" -msgstr "Exportados os arquivos de backup" +msgstr "Importar e restaurar o ficheiro de backup" #: plinth/modules/backups/templates/backups.html:56 -#, fuzzy -#| msgid "Exported backup archives" msgid "Upload and Restore" -msgstr "Exportados os arquivos de backup" +msgstr "Importar e Restaurar" #: plinth/modules/backups/templates/backups.html:59 -#, fuzzy -#| msgid "Existing backups" msgid "Add a backup location" -msgstr "Cópias de segurança existentes" +msgstr "Adicionar uma localização de backup" #: plinth/modules/backups/templates/backups.html:63 -#, fuzzy -#| msgid "Existing backups" msgid "Add Backup Location" -msgstr "Cópias de segurança existentes" +msgstr "Adicionar localização de backup" #: plinth/modules/backups/templates/backups.html:66 -#, fuzzy -#| msgid "Existing backups" msgid "Add a remote backup location" -msgstr "Cópias de segurança existentes" +msgstr "Adicionar uma localização remota de backup" #: plinth/modules/backups/templates/backups.html:70 -#, fuzzy -#| msgid "Existing backups" msgid "Add Remote Backup Location" -msgstr "Cópias de segurança existentes" +msgstr "Adicionar localização remota de backup" #: plinth/modules/backups/templates/backups.html:73 -#, fuzzy -#| msgid "Existing backups" msgid "Existing Backups" -msgstr "Cópias de segurança existentes" +msgstr "Backups existentes" #: plinth/modules/backups/templates/backups_add_remote_repository.html:34 #, python-format @@ -372,19 +350,18 @@ msgid "" "To restore a backup on a new %(box_name)s you need the ssh credentials and, " "if chosen, the encryption passphrase." msgstr "" +"As credenciais para este repositório estão armazenadas no teu %(box_name)s. <" +"br /> Para restaurar um backup num novo %(box_name)s precisa das credenciais " +"de SSH e, se escolhida, a frase-chave de encriptação." #: plinth/modules/backups/templates/backups_add_remote_repository.html:43 -#, fuzzy -#| msgid "Applications" msgid "Create Location" -msgstr "Localização" +msgstr "Criar Localização" #: plinth/modules/backups/templates/backups_add_repository.html:34 #: plinth/modules/gitweb/views.py:69 -#, fuzzy -#| msgid "Create new repository" msgid "Create Repository" -msgstr "Criar novo repositório" +msgstr "Criar Repositório" #: plinth/modules/backups/templates/backups_delete.html:27 msgid "Delete this archive permanently?" @@ -415,7 +392,7 @@ msgstr "Submeter" #: plinth/modules/backups/templates/backups_repository_remove.html:28 msgid "Are you sure that you want to remove this repository?" -msgstr "" +msgstr "Tem a certeza que quer remover este repositório?" #: plinth/modules/backups/templates/backups_repository_remove.html:34 msgid "" @@ -426,18 +403,19 @@ msgid "" " can add it again later on.\n" " " msgstr "" +"\n" +" O repositório remoto não será apagado.\n" +" Isto apenas remove o repositório da lista na pagina de backup,\n" +" pode adiciona-lo mais tarde.\n" +" " #: plinth/modules/backups/templates/backups_repository_remove.html:46 -#, fuzzy -#| msgid "Applications" msgid "Remove Location" -msgstr "Localização" +msgstr "Remover Localização" #: plinth/modules/backups/templates/backups_restore.html:30 -#, fuzzy -#| msgid "Restore data from this archive?" msgid "Restore data from" -msgstr "Restaurar dados deste arquivo?" +msgstr "Restaurar dados de" #: plinth/modules/backups/templates/backups_restore.html:43 #: plinth/modules/backups/views.py:171 @@ -445,18 +423,11 @@ msgid "Restore" msgstr "Restaurar" #: plinth/modules/backups/templates/backups_restore.html:47 -#, fuzzy -#| msgid "Restore" msgid "Restoring" -msgstr "Restaurar" +msgstr "Restaurando" #: plinth/modules/backups/templates/backups_upload.html:32 -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " You can choose the apps you wish to import after uploading a backup " -#| "file.\n" -#| " " +#, python-format msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " @@ -467,8 +438,10 @@ msgid "" " " msgstr "" "\n" -" Pode escolher os aplicativos que deseja importar depois de carregar um " -"ficheiro de backup.\n" +" Importar um ficheiro de backup de outro %(box_name)s para restaurar o " +"seu conteúdo.\n" +"Pode escolher as apps que deseja restaurar depois de importar o ficheiro de " +"backup.\n" " " #: plinth/modules/backups/templates/backups_upload.html:42 @@ -485,7 +458,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_upload.html:56 msgid "Upload file" -msgstr "" +msgstr "Importar ficheiro" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:33 #, python-format @@ -503,7 +476,7 @@ msgstr "" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:55 msgid "How to verify?" -msgstr "" +msgstr "Como verificar?" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:60 msgid "" @@ -529,46 +502,36 @@ msgid "Archive deleted." msgstr "Arquivo apagado." #: plinth/modules/backups/views.py:124 -#, fuzzy -#| msgid "Exported backup archives" msgid "Upload and restore a backup" -msgstr "Exportados os arquivos de backup" +msgstr "Importar e restaurar backup" #: plinth/modules/backups/views.py:159 msgid "Restored files from backup." msgstr "Arquivos do backup restaurados." #: plinth/modules/backups/views.py:186 -#, fuzzy -#| msgid "No exported backup archives were found." msgid "No backup file found." -msgstr "Não foram encontrados arquivos de backup exportados." +msgstr "Ficheiro de backup não encontrado." #: plinth/modules/backups/views.py:194 -#, fuzzy -#| msgid "Restore from backup" msgid "Restore from uploaded file" -msgstr "Restaurar a partir do backup" +msgstr "Restaurar a partir do ficheiro de backup" #: plinth/modules/backups/views.py:251 msgid "No additional disks available to add a repository." msgstr "" #: plinth/modules/backups/views.py:259 -#, fuzzy -#| msgid "Create new repository" msgid "Create backup repository" -msgstr "Criar novo repositório" +msgstr "Criar repositório de backup" #: plinth/modules/backups/views.py:286 msgid "Create remote backup repository" msgstr "" #: plinth/modules/backups/views.py:305 -#, fuzzy -#| msgid "Add Remote Repository" msgid "Added new remote SSH repository." -msgstr "Adicionar Repositório Remoto" +msgstr "Adicionar novo repositório de SSH remoto." #: plinth/modules/backups/views.py:327 msgid "Verify SSH hostkey" @@ -591,16 +554,12 @@ msgid "Authentication to remote server failed." msgstr "" #: plinth/modules/backups/views.py:381 -#, fuzzy -#| msgid "Error installing application: {error}" msgid "Error establishing connection to server: {}" -msgstr "Erro a instalar a aplicação: {error}" +msgstr "Erro a estabelecer ligação ao servidor: {}" #: plinth/modules/backups/views.py:392 -#, fuzzy -#| msgid "Repository not found" msgid "Repository removed." -msgstr "Repositório não encontrado" +msgstr "Repositório removido." #: plinth/modules/backups/views.py:406 msgid "Remove Repository" @@ -623,10 +582,8 @@ msgid "BIND" msgstr "BIND" #: plinth/modules/bind/__init__.py:38 -#, fuzzy -#| msgid "Domain Name" msgid "Domain Name Server" -msgstr "Nome de Domínio" +msgstr "Servidor de Nomes de Domínio" #: plinth/modules/bind/__init__.py:45 #, fuzzy @@ -801,7 +758,7 @@ msgstr "" #: plinth/modules/config/forms.py:108 msgid "Show apps and features that require more technical knowledge." -msgstr "" +msgstr "Mostrar apps e funcionalidades que requerem conhecimento mais técnico." #: plinth/modules/config/views.py:64 #, python-brace-format @@ -829,7 +786,7 @@ msgstr "Erro ao definir o nome do domínio: {exception}" #: plinth/modules/config/views.py:90 msgid "Webserver home page set" -msgstr "" +msgstr "Definir página principal do servidor" #: plinth/modules/config/views.py:98 #, fuzzy, python-brace-format @@ -1703,7 +1660,7 @@ msgstr "" #: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" -msgstr "" +msgstr "Manual" #: plinth/modules/help/help.py:59 plinth/modules/help/help.py:107 #: plinth/modules/help/templates/help_support.html:24 @@ -1923,6 +1880,8 @@ msgid "" "Search for past discussions or post a new query on our discussion forum." msgstr "" +"Pesquise por discussões ou publique uma nova questão no nosso fórum." #: plinth/modules/help/templates/help_support.html:42 msgid "" @@ -2014,6 +1973,9 @@ msgid "" "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" +"I2P deixa-o navegar a Internet e serviços escondidos (eepsites) " +"anonimamente. Para isto, o seu browser, de preferência um browser Tor, " +"precisa de ter uma proxy configurada." #: plinth/modules/i2p/views.py:95 msgid "" @@ -2404,6 +2366,7 @@ msgid "" "New users can be registered from any client if public registration is " "enabled." msgstr "" +"Novos utilizadores podem registar-se se o registo público estiver activado." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:45 #, python-format @@ -4005,6 +3968,10 @@ msgid "" "\"https://f-droid.org/repository/browse/?fdid=com.csipsimple\"> CSipSimple (for Android phones)." msgstr "" +"Para fazer chamadas SIP, uma aplicação cliente é necessária. As aplicações " +"clientes disponíveis incluem a Jitsi (" +"para computadores) e aCSipSimple (para Android)." #: plinth/modules/repro/__init__.py:55 msgid "" @@ -4237,7 +4204,7 @@ msgstr "" #: plinth/modules/searx/forms.py:36 msgid "Allow this application to be used by anyone who can reach it." -msgstr "" +msgstr "Permitir o uso desta aplicação por todos." #: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 @@ -4814,7 +4781,7 @@ msgstr "" #: plinth/modules/storage/__init__.py:248 msgid "The operation would wake up a disk that is in a deep-sleep state." -msgstr "" +msgstr "Esta operação pode ligar um disco que esteja no estado de adormecido." #: plinth/modules/storage/__init__.py:251 msgid "Attempting to unmount a device that is busy." From 4fa1500f318e63e382a7efb401b7ec22dc188f00 Mon Sep 17 00:00:00 2001 From: Michael Breidenbach Date: Sun, 15 Dec 2019 09:42:24 +0000 Subject: [PATCH 39/42] Translated using Weblate (Swedish) Currently translated at 100.0% (1115 of 1115 strings) --- plinth/locale/sv/LC_MESSAGES/django.po | 149 ++++++++----------------- 1 file changed, 49 insertions(+), 100 deletions(-) diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index d14a4693a..36b091e4c 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: 2019-12-02 17:30-0500\n" -"PO-Revision-Date: 2019-11-21 18:04+0000\n" +"PO-Revision-Date: 2019-12-16 22:57+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish \n" @@ -200,24 +200,24 @@ msgid "" "\"Key in Repository\" means that a password-protected key is stored with the " "backup." msgstr "" -"\"Key in Repository\" betyder att en lösenordsskyddad nyckel lagras med " +"\"Nyckel i databasen\" innebär att en lösenordsskyddad nyckel lagras med " "säkerhetskopian." #: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 msgid "Passphrase" -msgstr "Lösenord" +msgstr "Lösenfras" #: plinth/modules/backups/forms.py:136 msgid "Passphrase; Only needed when using encryption." -msgstr "lösenfras ; Behövs endast när du använder kryptering." +msgstr "Lösenfras Behövs bara när du använder kryptering." #: plinth/modules/backups/forms.py:139 msgid "Confirm Passphrase" -msgstr "Bekräfte Lösenord" +msgstr "Bekräfta lösenfras" #: plinth/modules/backups/forms.py:139 msgid "Repeat the passphrase." -msgstr "Upprepa lösenfras." +msgstr "Upprepa lösenfrasen." #: plinth/modules/backups/forms.py:150 msgid "The entered encryption passphrases do not match" @@ -225,15 +225,15 @@ msgstr "De angivna lösenfraserna för kryptering matchar inte" #: plinth/modules/backups/forms.py:154 msgid "Passphrase is needed for encryption." -msgstr "Lösenfras behövs för kryptering." +msgstr "Lösenfras krävs för kryptering." #: plinth/modules/backups/forms.py:189 msgid "Select Disk or Partition" -msgstr "Välj Disk eller Partition" +msgstr "Välj disk eller partition" #: plinth/modules/backups/forms.py:190 msgid "Backups will be stored in the directory FreedomBoxBackups" -msgstr "Säkerhetskopior lagras i katalogen FreedomBoxBackups" +msgstr "Säkerhetskopior kommer att lagras i katalogen FreedomBoxBackups" #: plinth/modules/backups/forms.py:199 msgid "SSH Repository Path" @@ -663,20 +663,13 @@ msgstr "" "webbaserad terminal för konsoloperationer är också tillgänglig." #: plinth/modules/cockpit/__init__.py:57 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Cockpit will be available from /_cockpit/ path on the web server. It can be " -#| "accessed by any user on {box_name} belonging " -#| "to the admin group." +#, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -"När det är aktiverat kommer cockpit att finnas tillgänglig från /_cockpit/ path på webbservern. " -"Det kan nås via alla användare på {box_name} som " -"tillhör admin-gruppen." +"Den kan nås genom att alla användar på " +"{box_name} som hör till administratörsgruppen." #: plinth/modules/config/__init__.py:37 msgid "General Configuration" @@ -941,20 +934,12 @@ msgstr "" "användargränssnitt." #: plinth/modules/deluge/__init__.py:45 -#, fuzzy -#| msgid "" -#| "When enabled, the Deluge web client will be available from /deluge path on the web server. " -#| "The default password is 'deluge', but you should log in and change it " -#| "immediately after enabling this service." msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -"När aktiverad blir Deluges webbklient tillgänglig via / deluge address på webbservern. " "Standardlösenordet är \"deluge\", men du bör logga in och ändra det " -"omedelbart efter att du aktiverat tjänsten." +"omedelbart efter att du har aktiverat den här tjänsten." #: plinth/modules/deluge/__init__.py:49 #: plinth/modules/transmission/__init__.py:55 @@ -2179,23 +2164,14 @@ msgid "Wiki and Blog" msgstr "Wiki och Blogg" #: plinth/modules/ikiwiki/__init__.py:46 -#, fuzzy -#| 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. When enabled, the blogs and " -#| "wikis will be available at /ikiwiki (once created)." 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 "" -"ikiwiki är en enkel wiki och blogg ansökan. Den stöttar flera lightweight " -"pålägg språken, inklusive markdown, och gemensam blogging funktionellitet " -"sådan som kommentarerna och RSS fodrar. När den är aktiverad kommer " -"bloggarna och wikis att finnas tillgängliga på /ikiwiki (en gång skapad)." +"ikiwiki är en enkel wiki- och bloggapplikation. Den stöttar flera " +"lightweight pålägg språken, inklusive markdown, och gemensam blogging " +"funktionellitet sådan som kommentarerna och RSS feeds." #: plinth/modules/ikiwiki/__init__.py:50 #, python-brace-format @@ -3740,7 +3716,7 @@ msgstr "Aktivera OpenVPN server" #: plinth/modules/openvpn/manifest.py:63 msgid "TunnelBlick" -msgstr "" +msgstr "TunnelBlick" #: plinth/modules/openvpn/templates/openvpn.html:42 #, python-format @@ -3777,13 +3753,7 @@ msgid "Profile" msgstr "Profil" #: plinth/modules/openvpn/templates/openvpn.html:90 -#, fuzzy, python-format -#| msgid "" -#| "To connect to %(box_name)s's VPN, you need to download a profile and feed " -#| "it to an OpenVPN client on your mobile or desktop machine. OpenVPN " -#| "Clients are available for most platforms. See the manual page " -#| "on recommended clients and instructions on how to configure them." +#, python-format msgid "" "To connect to %(box_name)s's VPN, you need to download a profile and feed it " "to an OpenVPN client on your mobile or desktop machine. OpenVPN Clients are " @@ -3792,9 +3762,9 @@ msgid "" msgstr "" "För att ansluta till %(box_name)s VPN måste du ladda ner en profil och mata " "den till en OpenVPN-klient på din mobila eller stationära dator. OpenVPN-" -"klienter är tillgängliga för de flesta plattformar. Se manualsidan " -"på rekommenderade klienter och instruktioner om hur du konfigurerar dem." +"klienter är tillgängliga för de flesta plattformar. Klicka på \"Läs mer...\"" +" ovan för rekommenderade klienter och instruktioner om hur du konfigurerar " +"dem." #: plinth/modules/openvpn/templates/openvpn.html:100 #, python-format @@ -3867,23 +3837,17 @@ msgid "Your ISP limits incoming connections." msgstr "Din ISP begränsar inkommande anslutningar." #: plinth/modules/pagekite/__init__.py:61 -#, fuzzy, python-brace-format -#| msgid "" -#| "PageKite works around NAT, firewalls and IP-address limitations by using " -#| "a combination of tunnels and reverse proxies. You can use any pagekite " -#| "service provider, for example pagekite." -#| "net. In future it might be possible to use your buddy's {box_name} " -#| "for this." +#, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " "combination of tunnels and reverse proxies. You can use any pagekite service " "provider, for example pagekite.net. In " "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -"PageKite arbetar runt NAT, brandväggar och IP-adress begränsningar med hjälp " +"PageKite arbetar runt NAT, brandväggar och IP adress begränsningar med hjälp " "av en kombination av tunnlar och omvända proxyservrar. Du kan använda valfri " "pagekite-tjänstprovider, till exempel " -"pagekite. net . I framtiden kan det vara möjligt att använda din kompis " +"pagekite. net . I framtiden kan det vara möjligt att använda din kompis " "{box_name} för detta." #: plinth/modules/pagekite/__init__.py:87 @@ -3992,10 +3956,8 @@ msgstr "Anpassade tjänster" #: plinth/modules/pagekite/templates/pagekite_configure.html:50 #: plinth/modules/pagekite/templates/pagekite_configure.html:52 -#, fuzzy -#| msgid "Custom Services" msgid "Add Custom Service" -msgstr "Anpassade tjänster" +msgstr "Lägg till anpassad tjänst" #: plinth/modules/pagekite/templates/pagekite_configure.html:57 msgid "Existing custom services" @@ -4011,10 +3973,8 @@ msgid "Delete this service" msgstr "Ta bort den här tjänsten" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:30 -#, fuzzy -#| msgid "Added custom service" msgid "Add custom PageKite service" -msgstr "Lade till anpassad service" +msgstr "Lägg till anpassad PageKite-tjänst" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:32 msgid "" @@ -4526,13 +4486,15 @@ msgstr "" #: plinth/modules/samba/__init__.py:43 msgid "Samba" -msgstr "" +msgstr "Samba" #: plinth/modules/samba/__init__.py:48 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." 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:51 #, python-brace-format @@ -4541,22 +4503,25 @@ msgid "" "{hostname} shares are open to everyone in your local network and are " "accessible under Network section in the file manager on your computer." msgstr "" +"Efter installationen kan du välja vilka diskar som ska användas för delning. " +"Aktiverat {hostname}-resurser är öppna för alla i ditt lokala nätverk och är " +"tillgängliga under nätverks avsnitt i filhanteraren på datorn." #: plinth/modules/samba/__init__.py:57 msgid "Access shared folders from inside the server" -msgstr "" +msgstr "Komma åt delade mappar inifrån servern" #: plinth/modules/samba/templates/samba.html:38 -#, fuzzy -#| msgid "Select Disk or Partition" msgid "Select disks for sharing" -msgstr "Välj Disk eller Partition" +msgstr "Välj diskar för delning" #: plinth/modules/samba/templates/samba.html:40 msgid "" "Note: only specially created directory will be shared on selected disks, not " "the whole disk." msgstr "" +"Obs: endast särskilt skapade katalog kommer att delas på valda diskar, inte " +"hela disken." #: plinth/modules/samba/templates/samba.html:50 #: plinth/modules/storage/templates/storage.html:41 @@ -4575,51 +4540,41 @@ msgstr "Används" #: plinth/modules/samba/templates/samba.html:76 msgid "vfat partitions are not supported" -msgstr "" +msgstr "vfat-partitioner stöds inte" #: plinth/modules/samba/templates/samba.html:108 msgid "Shares configured but the disk is not available" -msgstr "" +msgstr "Resurser konfigurerade men disken är inte tillgänglig" #: plinth/modules/samba/templates/samba.html:110 msgid "If the disk is plugged back in, sharing will be automatically enabled." -msgstr "" +msgstr "Om disken ansluts igen aktiveras delning automatiskt." #: plinth/modules/samba/templates/samba.html:115 -#, fuzzy -#| msgid "Share added." msgid "Share name" -msgstr "Share tillagd." +msgstr "Resursnamn" #: plinth/modules/samba/templates/samba.html:116 -#, fuzzy -#| msgid "Actions" msgid "Action" msgstr "Åtgärder" #: plinth/modules/samba/views.py:74 -#, fuzzy -#| msgid "Share deleted." msgid "Share enabled." -msgstr "Share borttagen." +msgstr "Resurs aktiverad." #: plinth/modules/samba/views.py:79 -#, fuzzy, python-brace-format -#| msgid "Error ejecting device: {error_message}" +#, python-brace-format msgid "Error enabling share: {error_message}" -msgstr "Fel mata ut enhet: {error_message}" +msgstr "Fel vid aktivering av resurs: {error_message}" #: plinth/modules/samba/views.py:95 -#, fuzzy -#| msgid "Share edited." msgid "Share disabled." -msgstr "Share redigerad." +msgstr "Share resurs inaktiverat." #: plinth/modules/samba/views.py:100 -#, fuzzy, python-brace-format -#| msgid "Error ejecting device: {error_message}" +#, python-brace-format msgid "Error disabling share: {error_message}" -msgstr "Fel mata ut enhet: {error_message}" +msgstr "Fel vid inaktivering av resurs: {error_message}" #: plinth/modules/searx/__init__.py:40 plinth/modules/searx/manifest.py:24 msgid "Searx" @@ -5760,19 +5715,13 @@ msgstr "" "känner dig så nära en riktig stationär applikation som möjligt." #: plinth/modules/ttrss/__init__.py:52 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Tiny Tiny RSS will be available from /tt-rss path on the web server. It can be " -#| "accessed by any user with a {box_name} login." +#, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -"När den är aktiverad kommer Tiny Tiny RSS att finnas tillgänglig från /tt-RSS Path på webbservern. " -"Den kan nås av alla användare med en {box_name} " -"login ." +"När den är aktiverad, kan Tiny Tiny RSS nås av alla " +"användare med en {box_name} login." #: plinth/modules/ttrss/__init__.py:56 msgid "" From a7c451f5a5b76ad2b6acdee12bf3a60d4349d677 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 16 Dec 2019 17:59:27 -0500 Subject: [PATCH 40/42] locale: Update translation strings Signed-off-by: James Valleroy --- plinth/locale/bg/LC_MESSAGES/django.po | 973 +++++++++-------- plinth/locale/bn/LC_MESSAGES/django.po | 973 +++++++++-------- plinth/locale/cs/LC_MESSAGES/django.po | 1001 ++++++++++-------- plinth/locale/da/LC_MESSAGES/django.po | 1002 ++++++++++-------- plinth/locale/de/LC_MESSAGES/django.po | 1023 ++++++++++-------- plinth/locale/django.pot | 973 +++++++++-------- plinth/locale/el/LC_MESSAGES/django.po | 973 +++++++++-------- plinth/locale/es/LC_MESSAGES/django.po | 1049 +++++++++++-------- plinth/locale/fa/LC_MESSAGES/django.po | 981 +++++++++-------- plinth/locale/fake/LC_MESSAGES/django.po | 1002 ++++++++++-------- plinth/locale/fr/LC_MESSAGES/django.po | 1019 ++++++++++-------- plinth/locale/gl/LC_MESSAGES/django.po | 973 +++++++++-------- plinth/locale/gu/LC_MESSAGES/django.po | 977 +++++++++-------- plinth/locale/hi/LC_MESSAGES/django.po | 999 ++++++++++-------- plinth/locale/hu/LC_MESSAGES/django.po | 1001 ++++++++++-------- plinth/locale/id/LC_MESSAGES/django.po | 981 +++++++++-------- plinth/locale/it/LC_MESSAGES/django.po | 978 +++++++++-------- plinth/locale/ja/LC_MESSAGES/django.po | 973 +++++++++-------- plinth/locale/kn/LC_MESSAGES/django.po | 973 +++++++++-------- plinth/locale/lt/LC_MESSAGES/django.po | 973 +++++++++-------- plinth/locale/nb/LC_MESSAGES/django.po | 1001 ++++++++++-------- plinth/locale/nl/LC_MESSAGES/django.po | 1004 ++++++++++-------- plinth/locale/pl/LC_MESSAGES/django.po | 977 +++++++++-------- plinth/locale/pt/LC_MESSAGES/django.po | 993 ++++++++++-------- plinth/locale/ru/LC_MESSAGES/django.po | 1006 ++++++++++-------- plinth/locale/sl/LC_MESSAGES/django.po | 977 +++++++++-------- plinth/locale/sv/LC_MESSAGES/django.po | 1022 ++++++++++-------- plinth/locale/ta/LC_MESSAGES/django.po | 973 +++++++++-------- plinth/locale/te/LC_MESSAGES/django.po | 992 ++++++++++-------- plinth/locale/tr/LC_MESSAGES/django.po | 1004 ++++++++++-------- plinth/locale/uk/LC_MESSAGES/django.po | 977 +++++++++-------- plinth/locale/zh_Hans/LC_MESSAGES/django.po | 1002 ++++++++++-------- 32 files changed, 17948 insertions(+), 13777 deletions(-) diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index ca6b0b735..ec1214357 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-10-12 14:52+0000\n" "Last-Translator: Nevena Mircheva \n" "Language-Team: Bulgarian any user on {box_name} " "belonging to the admin group." msgstr "" +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -632,13 +652,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -663,11 +683,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -678,11 +698,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -692,51 +712,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -744,7 +764,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -842,23 +862,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -876,7 +896,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -964,18 +984,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1014,46 +1034,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1062,68 +1082,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1182,7 +1202,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1190,15 +1210,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1206,18 +1226,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1454,7 +1474,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1524,33 +1544,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1559,8 +1579,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1699,7 +1719,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1813,11 +1833,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1825,23 +1845,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1854,7 +1874,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1890,18 +1910,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1910,22 +1930,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1964,32 +1984,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1998,15 +2018,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2033,11 +2053,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2142,36 +2162,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2180,7 +2200,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2190,7 +2210,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2227,7 +2247,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2259,11 +2279,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2272,11 +2292,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2284,7 +2304,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2293,7 +2313,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2329,23 +2349,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2354,11 +2374,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2404,7 +2424,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2413,52 +2433,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2620,27 +2695,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2649,6 +2734,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2695,43 +2784,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2739,176 +2828,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3115,7 +3204,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3131,6 +3220,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3143,7 +3233,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3196,13 +3286,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3245,11 +3335,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3260,13 +3350,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3394,7 +3484,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3635,18 +3725,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3656,7 +3746,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3665,11 +3755,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3680,7 +3770,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3889,7 +3979,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3903,13 +3993,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3917,7 +4007,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3966,21 +4056,21 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Грешка при инсталиране на приложението: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -3990,23 +4080,23 @@ msgstr "Грешка при инсталиране на приложението msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4038,27 +4128,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4071,7 +4161,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4100,12 +4190,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4133,18 +4223,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4153,7 +4243,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4164,23 +4254,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4239,48 +4329,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4338,43 +4428,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4450,11 +4540,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4553,83 +4643,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4695,11 +4821,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4707,7 +4833,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4718,7 +4844,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4726,11 +4852,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4738,7 +4864,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4794,76 +4920,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4871,41 +4997,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4954,53 +5080,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5008,7 +5127,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5074,18 +5193,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5093,7 +5212,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5102,15 +5221,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5119,59 +5238,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5187,12 +5306,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5222,7 +5341,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5248,62 +5367,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5346,12 +5465,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5461,6 +5580,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5540,46 +5663,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5592,14 +5711,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index bf09cdbb2..092648b64 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,22 +22,22 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:299 +#: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:302 +#: plinth/action_utils.py:301 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:407 +#: plinth/action_utils.py:406 #, python-brace-format msgid "Access URL {url} on tcp{kind}" msgstr "" -#: plinth/action_utils.py:411 +#: plinth/action_utils.py:410 #, python-brace-format msgid "Access URL {url}" msgstr "" @@ -52,7 +52,7 @@ msgstr "" msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:37 plinth/views.py:61 +#: plinth/context_processors.py:36 plinth/views.py:61 msgid "FreedomBox" msgstr "" @@ -60,38 +60,38 @@ msgstr "" msgid "Enable application" msgstr "" -#: plinth/forms.py:55 +#: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" -#: plinth/forms.py:57 +#: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -#: plinth/forms.py:65 +#: plinth/forms.py:64 msgid "Language" msgstr "" -#: plinth/forms.py:66 +#: plinth/forms.py:65 msgid "Language to use for presenting this web interface" msgstr "" -#: plinth/forms.py:73 +#: plinth/forms.py:72 msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:73 plinth/templates/setup.html:57 +#: plinth/middleware.py:72 plinth/templates/setup.html:45 msgid "Application installed." msgstr "" -#: plinth/middleware.py:79 +#: plinth/middleware.py:78 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:83 +#: plinth/middleware.py:82 #, python-brace-format msgid "Error installing application: {error}" msgstr "" @@ -102,7 +102,7 @@ msgstr "" msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:58 +#: plinth/modules/apache/__init__.py:57 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -192,7 +192,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" msgstr "" @@ -262,27 +262,27 @@ msgstr "" msgid "Connection refused" msgstr "" -#: plinth/modules/backups/repository.py:63 +#: plinth/modules/backups/repository.py:62 msgid "Repository not found" msgstr "" -#: plinth/modules/backups/repository.py:69 +#: plinth/modules/backups/repository.py:67 msgid "Incorrect encryption passphrase" msgstr "" -#: plinth/modules/backups/repository.py:74 +#: plinth/modules/backups/repository.py:72 msgid "SSH access denied" msgstr "" -#: plinth/modules/backups/repository.py:80 +#: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" -#: plinth/modules/backups/repository.py:154 +#: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." msgstr "" -#: plinth/modules/backups/repository.py:342 +#: plinth/modules/backups/repository.py:337 #, python-brace-format msgid "{box_name} storage" msgstr "" @@ -337,7 +337,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -346,9 +346,9 @@ msgid "Delete this archive permanently?" msgstr "" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "" @@ -583,9 +583,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -593,11 +593,11 @@ msgstr "" msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -606,18 +606,38 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, 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:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -625,13 +645,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -656,11 +676,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -671,11 +691,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -685,51 +705,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -737,7 +757,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -835,23 +855,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -869,7 +889,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -957,18 +977,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1007,46 +1027,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1055,68 +1075,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1175,7 +1195,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1183,15 +1203,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1199,18 +1219,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1447,7 +1467,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1517,33 +1537,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1552,8 +1572,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1692,7 +1712,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1806,11 +1826,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1818,23 +1838,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1847,7 +1867,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1883,18 +1903,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1903,22 +1923,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1957,32 +1977,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1991,15 +2011,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2026,11 +2046,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2135,36 +2155,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2173,7 +2193,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2183,7 +2203,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2220,7 +2240,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2252,11 +2272,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2265,11 +2285,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2277,7 +2297,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2286,7 +2306,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2322,23 +2342,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2347,11 +2367,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2397,7 +2417,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2406,52 +2426,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2613,27 +2688,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2642,6 +2727,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2688,43 +2777,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2732,176 +2821,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3108,7 +3197,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3124,6 +3213,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3136,7 +3226,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3189,13 +3279,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3238,11 +3328,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3253,13 +3343,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3387,7 +3477,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3628,18 +3718,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3649,7 +3739,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3658,11 +3748,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3673,7 +3763,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3882,7 +3972,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3896,13 +3986,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3910,7 +4000,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3959,20 +4049,20 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -3981,23 +4071,23 @@ msgstr "" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4029,27 +4119,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4062,7 +4152,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4091,12 +4181,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4124,18 +4214,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4144,7 +4234,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4155,23 +4245,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4230,48 +4320,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4329,43 +4419,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4441,11 +4531,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4544,83 +4634,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4686,11 +4812,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4698,7 +4824,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4709,7 +4835,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4717,11 +4843,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4729,7 +4855,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4785,76 +4911,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4862,41 +4988,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4945,53 +5071,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -4999,7 +5118,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5065,18 +5184,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5084,7 +5203,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5093,15 +5212,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5110,59 +5229,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5178,12 +5297,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5213,7 +5332,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5239,62 +5358,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5337,12 +5456,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5452,6 +5571,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5531,46 +5654,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5583,14 +5702,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 4551f5cef..2da9af457 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-10-26 17:53+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech /" @@ -676,11 +676,33 @@ msgstr "" "\"{users_url}\">uživatele s účtem na {box_name}, náležejícím do skupiny " "admin." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Přístupový bod" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Obecná nastavení" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -688,13 +710,13 @@ msgstr "Obecná nastavení" msgid "Configure" msgstr "Nastavit" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Doménový název" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Neplatný doménový název" @@ -723,11 +745,11 @@ msgstr "" "písmeno nebo číslici a obsahoval pouze písmena, číslice a spojovníky. " "Celková délka může být nejvýše 63 znaků." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Neplatný název stroje" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -744,11 +766,11 @@ msgstr "" "ze štítků může být nejvýše 63 znaků. Celková délka doménového názvu může být " "nejvýše 253 znaků." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Domovská stránka domovského serveru" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -764,51 +786,51 @@ msgstr "" "{box_name} (Plinth), uživatelé budou potřebovat výslovně zadávat /plinth " "nebo /freedombox, aby se dostali na službu {box_name} (Plinth)." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Zobrazit pokročilé aplikace a funkce" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "Zobrazit aplikace a funkce, které vyžadují techničtější znalosti." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Chyba při nastavování názvu stroje: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Nastavení názvu stroje" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Chyba při nastavování doménového názvu: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Nastavení doménového názvu" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Chyba při nastavování domovské stránky webového serveru: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Nastavení domovské stránky webového serveru" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Chyba při změně pokročilého režimu: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "Jsou zobrazovány pokročilé aplikace a funkce" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Jsou skryté pokročilé aplikace a funkce" @@ -816,7 +838,7 @@ msgstr "Jsou skryté pokročilé aplikace a funkce" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Sdílení souborů" @@ -936,17 +958,17 @@ msgstr "Nastavení časové zóny" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "Webový klient sítě BitTorrent" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" "Deluge je BitTorrent klient který poskytuje webové uživatelské rozhraní." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /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:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Stahovat soubory pomocí BitTorrent aplikací" @@ -982,7 +1004,7 @@ msgstr "" "Diagnostický test systému spustí několik kontrol pro potvrzení, že aplikace " "a služby fungují tak, jak mají." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Diagnostické testy" @@ -1080,18 +1102,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Aktualizovat nastavení" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Nastavení se nezměnila" @@ -1140,7 +1162,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Název dynamické domény" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1151,7 +1173,7 @@ msgstr "" "podrobnosti naleznete v šablonách aktualizačních URL adres některých " "poskytovatelů, poskytovaných pro ukázku." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1161,7 +1183,7 @@ msgstr "" "Pokud nepodporuje GnuDIP nebo není na seznamu, můžete použít URL adresu, " "poskytnutou vaším poskytovatelem." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1169,20 +1191,20 @@ msgstr "" "Nezadávejte sem URL adresu (jako třeba „https://example.com/“) ale pouze " "doménu, mířící na GnuDIP server (jako například „example.com“)." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "Veřejný doménový název který chcete používat pro dosažitelnost svého " "{box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Tuto předvolbu použijte pokud váš poskytovatel používá samy sebou podepsané " "certifikáty." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1190,11 +1212,11 @@ msgstr "" "Pokud je vybrána tato předvolba, pro základní HTTP ověření bude použito vaše " "uživatelské jméno a heslo ." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "Pokud chcete zachovat stávající heslo, tuto kolonku nevyplňujte." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1207,68 +1229,68 @@ msgstr "" "skutečné IP adresy. URL adresa by měla jen vrátit IP adresu, ze které " "přichází klient (příklad: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "Uživatelské jméno které bylo použito pro vytvoření účtu." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Zapnout dynamické DNS" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Typ služby" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "Adresa GnuDIP serveru" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Neplatný název serveru" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "URL adresa aktualizace" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Přijímat veškeré SSL certifikáty" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Použít základní HTTP ověřování" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Uživatelské jméno" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Heslo" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Zobrazit heslo" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "URL adresa na které hledat veřejnou IP adresu" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Zadejte URL adresu aktualizace nebo GNUDIP serveru" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Zadejte GnuDIP uživatelské jméno" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Zadejte doménový název GnuDIP" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Zadejte heslo" @@ -1346,7 +1368,7 @@ msgstr "Minulá aktualizace" msgid "About" msgstr "O systému" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1354,15 +1376,15 @@ msgstr "O systému" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Stav" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Nastavit dynamický DNS" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Stav dynamického DNS" @@ -1370,12 +1392,12 @@ msgstr "Stav dynamického DNS" msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Chat server" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1383,7 +1405,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." @@ -1641,7 +1663,7 @@ msgstr "" "Více o Git se dozvíte navštívením výuky Gitu." -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "Přístup do Git repozitářů pro čtení a zápis" @@ -1672,7 +1694,7 @@ msgstr "Popis repozitáře" msgid "Optional, for displaying on Gitweb." msgstr "Volitelné, zobrazuje se na Gitweb" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Jméno vlastníka repozitáře" @@ -1742,35 +1764,35 @@ msgstr "Nevratně smazat tento repozitář?" msgid "Delete %(name)s" msgstr "Smazat %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Repozitář vytvořen." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Při nastavování se vyskytla chyba." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Repozitář upraven." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Upravit repozitář" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Při nastavování se vyskytla chyba." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} smazáno." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} se nepodařilo smazat: {error}" @@ -1779,8 +1801,8 @@ msgstr "{name} se nepodařilo smazat: {error}" msgid "Documentation" msgstr "Dokumentace" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Příručka" @@ -1946,7 +1968,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Zjistit více…" @@ -2090,11 +2112,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Anonymní síť" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2106,7 +2128,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:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." @@ -2114,18 +2136,18 @@ msgstr "" "Více informací I2P naleznete na domovské stránce projektu." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 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:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "Spravovat aplikaci I2P" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2138,7 +2160,7 @@ msgstr "Spustit" msgid "Proxies" msgstr "Proxy servery" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Anonymní torenty" @@ -2182,11 +2204,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "wiki a blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2204,7 +2226,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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2217,22 +2239,22 @@ 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:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Zobrazit a upravit wiki aplikace" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Název účtu správce" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Heslo k účtu správce" @@ -2273,32 +2295,32 @@ msgstr "" "Tato akce odebere veškeré příspěvky, stránky a komentáře včetně historie " "verzí. Opravdu chcete nenávratně smazat tuto wiki/blog?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} vytvořena." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Wiki se nepodařilo vytvořit: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} vytvořen." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Blog se nepodařilo vytvořit: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "{title} dsmazáno." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "{title} se nepodařilo smazat: {error}" @@ -2307,16 +2329,16 @@ msgstr "{title} se nepodařilo smazat: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby server" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2348,11 +2370,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Chatovací klient" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2470,7 +2492,7 @@ msgstr "" "Nejsou nastavené žádné domény. Nastavte je, " "aby bylo možné pro ně získat certifikát." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2479,29 +2501,29 @@ msgstr "" "Platnost certifikátu pro doménu {domain} úspěšně odvolána. Může to chvíli " "trvat, než se změna projeví." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Nepodařilo se odvolat platnost certifikátu prodoménu {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Úspěšně obdržen certifikát pro doménu {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Nepodařilo se získat certifikát pro doménu {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certifikát pro doménu {domain} úspěšně smazán" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Nepodařilo se smazat certifikát pro doménu {domain}: {error}" @@ -2510,7 +2532,7 @@ msgstr "Nepodařilo se smazat certifikát pro doménu {domain}: {error}" msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2527,7 +2549,7 @@ 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:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @uziv_jmeno:domenovy_nazev." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2579,7 +2601,7 @@ msgstr "" " není v tuto chvíli podporována.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2626,11 +2648,11 @@ msgstr "" " Encrypt a získejte takový.\n" " " -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Registrace pro veřejnost otevřena" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Registrace pro veřejnost zavřena" @@ -2639,11 +2661,11 @@ msgstr "Registrace pro veřejnost zavřena" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2655,7 +2677,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:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2669,7 +2691,7 @@ msgstr "" "stránce Special:" "CreateAccount." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2713,23 +2735,23 @@ msgstr "" "Když je zapnuto, přístup bude omezen. Pouze lidé kteří zde mají uživatelské " "účty mohou číst/psát do wiki. Registrace veřejnosti jsou také vypnuté." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Heslo aktualizováno" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Registrace pro veřejnost otevřené" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Registrace pro veřejnost zavřené" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Soukromý režim zapnut" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Soukromý režim vypnut" @@ -2738,11 +2760,11 @@ msgstr "Soukromý režim vypnut" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Pískoviště s kostkami" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2796,7 +2818,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Pokud je vypnuto, postavy hráčů nemohou zemřít nebo se zranit." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Adresa" @@ -2805,32 +2827,87 @@ msgstr "Adresa" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Nastavení nejvyššího umožněného počtu hráčů aktualizováno" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Nastavení tvořivého režimu aktualizována" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "Nastavení PVP aktualizováno" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Nastavení poškozování aktualizováno" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "Pee-to-peer sdílení souborů" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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 " @@ -2840,7 +2917,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:48 +#: plinth/modules/mldonkey/__init__.py:50 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 " @@ -2851,14 +2928,14 @@ 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, 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:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Stahovat soubory pomocí eDonkey aplikací" @@ -3038,15 +3115,15 @@ 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:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Hlasový chat" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3054,7 +3131,7 @@ msgstr "" "Mumble je open source software pro šifrovanou, vysoce kvalitní hlasovou " "komunikaci s nízkou prodlevou." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3064,6 +3141,18 @@ msgstr "" "dispozici jsou klienti pro připojení z " "desktopu a Android zařízení." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "Heslo SSH serveru" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3072,6 +3161,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Heslo úspěšně změněno." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Jmenné služby" @@ -3130,23 +3225,23 @@ msgstr "S použitím DNSSEC na IPv{kind}" msgid "Connection Type" msgstr "Typ připojení" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Název připojení" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Fyzické rozhraní" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "Síťové zařízení ke kterému má toto spojení být přidruženo." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Zóna brány firewall" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3154,21 +3249,21 @@ msgstr "" "Zóna brány firewall řídí které služby jsou přes tato rozhraní dostupné. Jako " "Vnitřní vyberte pouze sítě, kterým důvěřujete." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Vnější" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Vnitřní" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "Způsob IPv4 adresování" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3180,19 +3275,19 @@ msgstr "" "bude vystupovat jako směrovač, poskytovat nastavení klientům na této síti a " "sdílet jim připojení k Internetu." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automaticky (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Sdílené" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Síťová maska" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3200,21 +3295,21 @@ msgstr "" "Volitelná hodnota. Pokud není vyplněno, bude použita výchozí maska sítě dané " "třídy IP adresy." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Brána" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Volitelná hodnota." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS server" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3222,11 +3317,11 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda IPv4 adresování je „Automaticky“, " "budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Pomocný DNS server" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3234,11 +3329,11 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda IPv4 adresování je „Automaticky“, " "budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "Způsob IPv6 adresování" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3247,27 +3342,27 @@ msgstr "" "„Automatické“ metody způsobí, že {box_name} získá nastavení z této sítě a " "bude na ní klientem." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automaticky" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automaticky, pouze DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Ignorovat" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Předpona" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Hodnota z rozmezí 1 až 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3275,7 +3370,7 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda získání IPv6 adresy je " "„Automaticky“, budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3283,54 +3378,54 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda získání IPv6 adresy je " "„Automaticky“, budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- vybrat --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Viditelný název sítě." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Režim" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastrukturní" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Přístupový bod" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Dočasný" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Frekvenční pásmo" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanál" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3338,11 +3433,11 @@ msgstr "" "Nemusí být vyplněné. Bezdrátový kanál ve vybraném frekvenčním pásmu na který " "omezit. Nevyplněno nebo 0 (nula) znamená automatický výběr." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3352,11 +3447,11 @@ msgstr "" "připojování k přístupovému bodu, připojit pouze pokud BSSID přístupového " "bodu odpovídá tomu zadanému. Příklad: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Režim ověřování" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3364,11 +3459,11 @@ msgstr "" "Pokud je bezdrátová síť zabezpečená a pro připojení vyžaduje heslo, vyberte " "WPA." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Otevřené" @@ -3577,7 +3672,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Metoda" @@ -3593,6 +3688,7 @@ msgstr "DNS server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Výchozí" @@ -3605,7 +3701,7 @@ msgid "This connection is not active." msgstr "Toto připojení není aktivní." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Zabezpečení" @@ -3668,13 +3764,13 @@ msgstr "Mezery" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3717,11 +3813,11 @@ msgstr "Vytvořit…" msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Virtuální soukromá síť" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3738,14 +3834,14 @@ 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:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "Stáhnout si profil" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "Zapnout OpenVPN server" @@ -3914,7 +4010,7 @@ msgstr "" "Vyberte pagekite server, který chcete používat. Pokud to má být ten výchozí, " "zadejte „pagekite.net“." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Port serveru" @@ -4183,11 +4279,11 @@ msgstr "Vypnout nyní" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Webová proxy" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4197,7 +4293,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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4212,7 +4308,7 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ nebo http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Přistupte {url} s proxy {proxy} na tcp{kind}" @@ -4221,11 +4317,11 @@ msgstr "Přistupte {url} s proxy {proxy} na tcp{kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "IRC klient" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4242,7 +4338,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:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your . K Radicale je možné přistupovat pomocí libovolného uživatelského účtu na " "{box_name}." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4371,7 +4467,7 @@ msgstr "" "uživatelské jméno. Kliknutí na tlačítko hledat vypíše existující kalendáře a " "adresáře kontaktů." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Nastavení přístupových práv aktualizováno" @@ -4491,11 +4587,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "E-mailový klient" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4508,7 +4604,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:45 +#: plinth/modules/roundcube/__init__.py:47 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -4530,7 +4626,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:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4550,13 +4646,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4564,7 +4660,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4619,25 +4715,25 @@ msgstr "Sdílení přidáno." msgid "Action" msgstr "Akce" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Sdílení smazáno." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Sdílení upraveno." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -4647,11 +4743,11 @@ msgstr "Chyba při vysouvání zařízení: {error_message}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Vyhledávání na webu" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4659,7 +4755,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:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4667,7 +4763,7 @@ 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Hledat na webu" @@ -4700,16 +4796,16 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Umožnit, aby tato aplikace byla používána kýmkoli, kdo se k ní může dostat." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Nastavení aktualizována." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Omezit přihlášení na konzoli (doporučeno)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4720,11 +4816,11 @@ msgstr "" "totiž mohou být schopní přistupovat k některým službám bez jakéhokoli " "dalšího ověřování." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2Ban (doporučeno)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4740,7 +4836,7 @@ msgid "Show security report" msgstr "Zobrazit výkaz o zabezpečení" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "Výkaz o zabezpečení" @@ -4769,12 +4865,12 @@ msgstr "Stávající zranitelnosti zabezpečení" msgid "Past Vulnerabilities" msgstr "Minulé zranitelnosti zabezpečení" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Chyba při nastavování omezeného přístupu: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Nastavení zabezpečení aktualizováno" @@ -4810,11 +4906,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Socks5 proxy" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4824,7 +4920,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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4837,7 +4933,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:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4850,25 +4946,25 @@ msgstr "" msgid "Recommended" msgstr "Doporučeno" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Server" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Název nebo IP adresa serveru" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Číslo portu serveru" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "Heslo sloužící pro šifrování dat. Je třeba, aby se shodovalo s heslem " "serveru." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" "Metoda šifrování. Je třeba, aby byla stejná, jaká je nastavená na serveru." @@ -4942,48 +5038,48 @@ msgstr "Sdílení s tímto názvem už existuje." msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Přidat sdílení" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Nyní není nastavené žádné sdílení." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Popis umístění na datovém úložišti" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Sdíleno přes" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "Se skupinami" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "veřejný přístup" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Sdílení přidáno." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Přidat sdílení" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Sdílení upraveno." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Upravit sdílení" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Sdílení smazáno." @@ -5058,43 +5154,43 @@ msgstr "" "Zapnout nebo vypnout pořizování zachycených stavů před a po instalaci " "software" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Limit hodinových zachycených stavů" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Ponechat nejvýše tolik hodinových zachycených stavů." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Limit denních zachycených stavů" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Ponechat nejvýše tolik denních zachycených stavů." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Limit týdenních zachycených stavů" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Ponechat nejvýše tolik týdenních zachycených stavů." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Limit měsíčních zachycených stavů" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Ponechat nejvýše tolik měsíčních zachycených stavů." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Limit ročních zachycených stavů" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5177,11 +5273,11 @@ msgstr "Spravovat zachycené stavy" msgid "Created snapshot." msgstr "Zachycený stav pořízen." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Nastavení zachycování stavů úložiště aktualizováno" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Chyba akce: {0} [{1}] [{2}]" @@ -5291,83 +5387,129 @@ 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:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bajtů" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "Operace se nezdařila." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "Operace byla zrušena." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 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:244 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:247 msgid "The operation timed out." msgstr "Časový limit aplikace překročen." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 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:254 msgid "The operation has already been cancelled." msgstr "Operace už byla zrušena." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 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:262 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:264 msgid "The device is not mounted." msgstr "Zařízení není připojeno." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "Není umožněno použít požadovanou volbu." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "Zařízení je připojeno jiným uživatelem." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid repository name." +msgid "Invalid directory name." +msgstr "Neplatný název repozitáře." + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Složka pro stahování" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "Zařízení je připojeno jiným uživatelem." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Složka pro stahování" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Public share" +msgid "Samba share" +msgstr "Veřejné sdílení" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Jsou používána následující úložná zařízení:" @@ -5440,11 +5582,11 @@ msgstr "Chyba při vysouvání zařízení: {error_message}" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Synchronizace souborů" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5456,7 +5598,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:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5473,7 +5615,7 @@ 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:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "Spravovat aplikaci Syncthing" @@ -5481,11 +5623,11 @@ msgstr "Spravovat aplikaci Syncthing" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Distribuované souborové úložiště" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5497,7 +5639,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:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5564,56 +5706,56 @@ msgstr "" "prohlížeč Tor Browser." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor skrytá služba" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Předávájící Tor most" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Port Tor předávání k dispozici" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 transport zaregistrován" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 transport zaregistrován" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Potvrdit použití Tor na {url} na tcp{kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "Zadejte platný most v tomto formátu: [přenos] IP:ORPort [otisk]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Zapnout Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Pro připojení k Tor síti použijte nadřazené mosty" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5624,11 +5766,11 @@ msgstr "" "(ISP) blokuje nebo cenzuruje připojení k Tor síti. Toto vypne předávací " "režimy." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Nadřazené mosty" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5638,11 +5780,11 @@ msgstr "" "\">https://bridges.torproject.org/ a zkopírovat informace odtud. V " "současnosti podporované transporty jsou none, obfs3, obfs4 a scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Zapnout Tor předávání" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5653,11 +5795,11 @@ msgstr "" "přenosové pásmo pro Tor síť. Toto udělejte pokud má přípojka rychlost více " "než 2 megabity/s v obou směrech." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Zapnout předávání Tor mostu" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5667,20 +5809,20 @@ msgstr "" "namísto veřejné databázi Tor předávání, čímž je těžší tento uzel cenzurovat. " "Toto ostatním pomůže obcházet cenzuru." -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Zapnout Tor skrytou službu" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5688,11 +5830,11 @@ msgstr "" "chat) bez odhalení jeho polohy. Toto prozatím nepoužívejte, pokud " "potřebujete silnou anonymitu." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Stahovat balíčky software prostřednictvím sítě Tor" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5702,7 +5844,7 @@ msgstr "" "síť Tor. To zlepší soukromí a zabezpečení při stahování software (ale je " "pomalejší)." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "Pro používání nadřazených mostů je třeba určit alespoň jeden takový." @@ -5756,7 +5898,7 @@ msgstr "Tor SOCKS port je k dispozici na vašem %(box_name)s na TCP portu 9050." msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5765,29 +5907,19 @@ msgstr "" "Transmision obsluhuje sdílení souborů Bitorrent. Poznamenejme, že BitTorrent " "není anonymní." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Složka pro stahování" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Složka do které ukládat stahování. Pokud použijete jinou než výchozí, " -"zajistěte aby existovala a uživatel „debian-transmission“ do ní mohl " -"zapisovat." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Čtečka novinek" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5796,7 +5928,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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5810,7 +5942,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:56 +#: plinth/modules/ttrss/__init__.py:58 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -5823,7 +5955,7 @@ 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Číst a přihlásit se k odběru novinek" @@ -5831,7 +5963,7 @@ msgstr "Číst a přihlásit se k odběru novinek" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (fork)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Aktualizovat" @@ -5906,18 +6038,18 @@ msgstr "Proces přechodu na novější verze zahájen." msgid "Starting upgrade failed." msgstr "Spouštění přechodu na novější verzi se nezdařilo." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Uživatelé a skupiny" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5925,7 +6057,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zkontrolujte LDAP položku „{search_item}“" @@ -5934,16 +6066,16 @@ msgstr "Zkontrolujte LDAP položku „{search_item}“" msgid "Access to all services and system settings" msgstr "Přístup ke všem službám a nastavení systému" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" "Toto uživatelské jméno je už používáno někým jiným nebo vyhrazeno pro systém." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Oprávnění" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5957,20 +6089,20 @@ msgstr "" "skupině správců (admin) se budou moci přihlásit všude. Mohou se k systému " "přihlásit také prostřednictvím SSH a mají práva správy (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Vytvoření LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Přidání nového uživatele do skupiny {group} se nezdařilo." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Pověřené SSH klíče" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -5980,39 +6112,39 @@ msgstr "" "systému i bez zadávání hesla. Klíčů je možné vložit vícero, každý na vlastní " "řádek. Prázdné řádky a ty, které začínají na znak # budou ignorovány." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "Přejmenování LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Odebrání uživatele ze skupiny se nezdařilo." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Přidání uživatele do skupiny se nezdařilo." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "Nepodařilo se vložit SSH klíče." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 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." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Změna hesla LDAP uživatele se nezdařila." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Přidání nového uživatele do skupiny správců (admin) se nezdařilo." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Omezení přístupu ke konzoli se nezdařilo." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Uživatelský účet vytvořen, není jste jím přihlášeni" @@ -6028,12 +6160,12 @@ msgstr "Uložit heslo" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Vytvořit uživatele" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Smazat uživatele" @@ -6066,7 +6198,7 @@ msgid "Create Account" msgstr "Vytvořit účet" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Uživatelé" @@ -6094,62 +6226,62 @@ msgstr "" msgid "Save Changes" msgstr "Uložit změny" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Uživatel %(username)s vytvořen." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "Uživatel %(username)s aktualizován." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Upravit uživatele" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "Uživatel {user} smazán." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "Smazání LDAP uživatele se nezdařilo." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Změnit heslo" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Heslo úspěšně změněno." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Obecné" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Chyba při instalaci" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "Instalace" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "stahování" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "změna média" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "soubor s nastaveními: {file}" @@ -6199,12 +6331,12 @@ msgstr "" "issues\">systému hlášení chyb abychom to mohli opravit. K hlášení také " "přiložte záznam (log) stavu." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "Služba %(service_name)s je spuštěná." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "Služba %(service_name)s není spuštěná." @@ -6316,6 +6448,10 @@ msgstr "" "Vyčkejte až %(box_name)s dokončí instalaci. Jakmile bude hotová, budete moci " "začít svůj %(box_name)s používat." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Instalace" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6410,19 +6546,15 @@ msgstr "" "nastavit předávání portů. Přesměrovávány by měly být následující porty pro " "%(service_name)s:" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Instalace" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Nainstalovat tuto aplikaci?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Tato aplikace potřebuje aktualizovat. Provést nyní?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6430,30 +6562,30 @@ msgstr "" "Už je spuštěná jiná instalace nebo přechod na novější verzi. Počkejte chvíli " "a zkuste to znovu." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" "Tato aplikace v současnosti není dostupná v repozitářích vámi používané " "distribuce." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Nainstalovat" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Provádění úkonů před instalací" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Provádění úkonů po instalaci" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "Instalace %(package_names)s: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% dokončeno" @@ -6466,18 +6598,27 @@ msgstr "Spustit webového klienta" msgid "Client Apps" msgstr "Klientské aplikace" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Aplikace zapnuta" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Aplikace vypnuta" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "gudžarátština" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Složka do které ukládat stahování. Pokud použijete jinou než výchozí, " +#~ "zajistěte aby existovala a uživatel „debian-transmission“ do ní mohl " +#~ "zapisovat." + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN server je spuštěný" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index 663e7b8d0..4349368d3 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2016-07-03 21:44+0000\n" "Last-Translator: Mikkel Kirkgaard Nielsen \n" "Language-Team: Danish /" @@ -701,11 +701,31 @@ msgstr "" "Når aktiveret, vil Tiny Tiny RSS være tilgængelige på stien /tt-rss på webserveren." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Generel Konfiguration" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -713,13 +733,13 @@ msgstr "Generel Konfiguration" msgid "Configure" msgstr "Konfigurer" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Domænenavn" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Ugyldigt domænenavn" @@ -750,11 +770,11 @@ msgstr "" "derimellem må kun være bogstaver, tal og bindestreger. Den samlede længde " "skal være 63 tegn eller derunder." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Ugyldigt værtsnavn" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -770,13 +790,13 @@ msgstr "" "bogstaver, tal og bindestreger. Hvert ord skal være på 63 tegn eller " "derunder. Den samlede længde skal være 253 tegn eller derunder." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 #, fuzzy #| msgid "Web Server (HTTP)" msgid "Webserver Home Page" msgstr "Webserver (HTTP)" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -786,53 +806,53 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Kunne ikke sætte værtsnavn: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Værtsnavn gemt" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Kunne ikke sætte domænenavn: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Domænenavn gemt" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Kunne ikke sætte værtsnavn: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Kunne ikke sætte domænenavn: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -840,7 +860,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 #, fuzzy #| msgid "Enable Shaarli" msgid "File Sharing" @@ -960,18 +980,18 @@ msgstr "Tidszone gemt" msgid "Deluge" msgstr "Aktiver Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 #, fuzzy #| msgid "BitTorrent Web Client (Deluge)" msgid "BitTorrent Web Client" msgstr "BitTorrent Webklient (Deluge)" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 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:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /deluge på webserveren. Standardkodeordet er 'deluge', men du " "bør logge ind og ændre det med det samme du har aktiveret denne tjeneste." -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -1007,7 +1027,7 @@ msgstr "" "Systemets diagnostiske test vil udføre en række tjek af dit system for at " "afgøre om applikationer og tjenester virker som forventet." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Diagnostisk Test" @@ -1095,18 +1115,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Opdater indstillinger" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Indstilling uændret" @@ -1160,7 +1180,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Domænenavn" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1170,7 +1190,7 @@ msgstr "" "bruges i URL'en. For flere detaljer se skabelonerne for opdaterings-URL'er i " "eksemplernes tjenester." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1180,7 +1200,7 @@ msgstr "" "udbyderen ikke understøtter GnuDIP-protokollen eller ikke er prædefineret, " "kan en opdaterings-URL fra din udbyder angives direkte." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1188,16 +1208,16 @@ msgstr "" "Her skal ikke angives en URL (såsom \"https://example.com/\"), men blot " "værtsnavnet for GnuDIP-serveren (såsom \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "Det offentlige domænenavn du vil bruge til at nå din {box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "Aktiver dette hvis din udbyder bruger selvunderskrevne certifikater." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1205,11 +1225,11 @@ msgstr "" "Hvis denne option er aktiveret vil dit brugernavn og kodeord blive anvendt " "til basal (\"basic\") HTTP-autentifikation." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "Lad dette felt stå tomt hvis du vil beholde dit nuværende kodeord." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1223,68 +1243,68 @@ msgstr "" "hvorfra klientens forespørgsel kommer (eksempelvis: http://myip." "datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "Brugernavnet der blev brugt ved kontooprettelse." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Aktiver Dynamisk DNS" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Servicetype" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "GnuDIP Serveradresse" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Ugyldigt servernavn" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "Opdaterings-URL" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Accepter alle SSL-certifikater" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Brug basal (\"basic\") HTTP-autentifikation" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Brugernavn" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Kodeord" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Vis kodeord" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Angiv venligst opdaterings-URL eller GnuDIP serveradresse" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Angiv venligst et brugernavn til GnuDIP" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Angiv venligst et domæne til GnuDIP-server" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Angiv venligst et kodeord" @@ -1364,7 +1384,7 @@ msgstr "Seneste opdatering" msgid "About" msgstr "Om" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1372,15 +1392,15 @@ msgstr "Om" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Status" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Konfigurer Dynamisk DNS" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Dynamisk DNS Status" @@ -1388,14 +1408,14 @@ msgstr "Dynamisk DNS Status" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 #, fuzzy #| msgid "Web Server" msgid "Chat Server" msgstr "Webserver" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1403,7 +1423,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the web client " @@ -1487,18 +1507,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:50 #: plinth/modules/i2p/templates/i2p.html:26 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:31 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:30 #: plinth/modules/snapshot/templates/snapshot.html:27 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:43 -#: plinth/templates/app.html:98 +#: plinth/templates/app.html:70 msgid "Configuration" msgstr "Konfiguration" -#: plinth/modules/ejabberd/views.py:78 +#: plinth/modules/ejabberd/views.py:79 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:82 +#: plinth/modules/ejabberd/views.py:83 msgid "Message Archive Management disabled" msgstr "" @@ -1547,7 +1567,7 @@ msgstr "Aktiveret" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:69 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 msgid "Disabled" msgstr "Deaktiveret" @@ -1623,11 +1643,11 @@ msgstr "Konfiguration Færdig" msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:45 +#: plinth/modules/gitweb/__init__.py:47 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:48 +#: plinth/modules/gitweb/__init__.py:50 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1638,13 +1658,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:55 +#: plinth/modules/gitweb/__init__.py:57 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1672,7 +1692,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "packages not found" msgid "Repository's owner name" @@ -1761,41 +1781,41 @@ msgstr "Slet bruger permanent?" msgid "Delete %(name)s" msgstr "Slet %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "packages not found" msgid "Repository created." msgstr "pakker ikke fundet" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Der opstod en fejl under konfigurationen." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "packages not found" msgid "Repository edited." msgstr "pakker ikke fundet" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "Opret Bruger" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Der opstod en fejl under konfigurationen." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} slettet." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" @@ -1804,8 +1824,8 @@ msgstr "Kunne ikke slette {name}: {error}" msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Brugermanual" @@ -1967,7 +1987,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 #, fuzzy #| msgid "Learn more »" msgid "Learn more..." @@ -2106,13 +2126,13 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "Tor Anonymiseringstjeneste" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2120,7 +2140,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki-siden." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktiver applikation" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -2159,7 +2179,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2197,13 +2217,13 @@ msgstr "" msgid "ikiwiki" msgstr "wiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 #, fuzzy #| msgid "Wiki & Blog" msgid "Wiki and Blog" msgstr "Wiki & Blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2220,7 +2240,7 @@ msgstr "" "kommentarer og RSS-feeds. Når aktiveret, vil blogge og wikier være " "tilgængelige på /ikiwiki." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2229,24 +2249,24 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" msgstr "Tjenester og Applikationer" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Administratorkontonavn" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Administratorkontokodeord" @@ -2287,33 +2307,33 @@ msgstr "" "Denne handling fjerner alle artikler, sider og kommentater inklusiv al " "historik. Slet denne wiki eller blog permanent?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} oprettet." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Kunne ikke oprette wiki: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} oprettet." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Kunne ikke oprette blog: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} slettet." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2323,17 +2343,17 @@ msgstr "Kunne ikke slette {name}: {error}" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "Webserver" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2360,13 +2380,13 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 #, fuzzy #| msgid "IRC Client (Quassel)" msgid "Chat Client" msgstr "IRC-klient (Quassel)" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2506,7 +2526,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2514,31 +2534,31 @@ msgid "" "moments to take effect." msgstr "Certifikatet for domænet {domain} blev trukket tilbage" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Fejl ved tilbagetrækning af certifikatet for domænet {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certifikatet for domænet {domain} blev erhvervet" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" "Fejl ved forsøg på at erhverve certifikatet for domænet {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "Certifikatet for domænet {domain} blev trukket tilbage" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, fuzzy, python-brace-format #| msgid "Failed to revoke certificate for domain {domain}: {error}" msgid "Failed to delete certificate for domain {domain}: {error}" @@ -2550,7 +2570,7 @@ msgstr "Fejl ved tilbagetrækning af certifikatet for domænet {domain}: {error} msgid "Matrix Synapse" msgstr "Chat-server (XMPP)" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2560,7 +2580,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2599,7 +2619,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2638,13 +2658,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 #, fuzzy #| msgid "Application enabled" msgid "Public registration enabled" msgstr "Applikation aktiveret" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy #| msgid "Application disabled" msgid "Public registration disabled" @@ -2655,11 +2675,11 @@ msgstr "Applikation deaktiveret" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2667,7 +2687,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2676,7 +2696,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2718,31 +2738,31 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "Kodeord" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Application enabled" msgid "Public registrations enabled" msgstr "Applikation aktiveret" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Application disabled" msgid "Public registrations disabled" msgstr "Applikation deaktiveret" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 #, fuzzy #| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "PageKite aktiveret" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy #| msgid "PageKite disabled" msgid "Private mode disabled" @@ -2753,13 +2773,13 @@ msgstr "PageKite deaktiveret" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 #, fuzzy #| msgid "Block Sandbox (Minetest)" msgid "Block Sandbox" msgstr "Block Testområde (Minetest)" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2815,7 +2835,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Adresse" @@ -2824,30 +2844,87 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "Konfiguration opdateret" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Mumble Tale-tjenesteserver" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 #, fuzzy @@ -2855,33 +2932,33 @@ msgstr "Konfiguration opdateret" msgid "MLDonkey" msgstr "Monkeysphere" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" msgstr "Aktiver Shaarli" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -3066,17 +3143,17 @@ 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:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "Tale-tjeneste (Mumble)" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3084,7 +3161,7 @@ msgstr "" "Mumble er open source software der tilbyder en højkvalitets tale-tjeneste " "med lav forsinkelse og kryptering." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3094,6 +3171,18 @@ msgstr "" "Klienter til computere og Android-enheder " "er tilgængelige." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "Save Password" +msgid "Set SuperUser Password" +msgstr "Gem Kodeord" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -3102,6 +3191,12 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Kodeord blev ændret." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Navnetjenester" @@ -3148,23 +3243,23 @@ msgstr "Bruger DNSSEC på IPv{kind}" msgid "Connection Type" msgstr "Forbindelsestype" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Forbindelsesnavn" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Fysisk Interface" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "Netværksenheden som denne forbindelse skal bindes til." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Firewall-zone" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3172,21 +3267,21 @@ msgstr "" "Firewall-zonen bestemmer hvilke tjenester der er tilgængelige fra dette " "interface. Vælg Kun internt for netværk du har tillid til." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Ekstern" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPv4 Adresseringsmetode" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3198,19 +3293,19 @@ msgstr "" "\" vil få {box_name} til at opføre sig som en router, der kan konfigurere " "klienter på dette netværk og dele sin internet-forbindelse." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Netmaske" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3218,21 +3313,21 @@ msgstr "" "Ikke obligatorisk. Hvis ikke angivet, vil en standardværdi for netmasken " "baseret på adressen anvendes." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Ikke obligatorisk." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS-server" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3241,11 +3336,11 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Sekundær DNS-server" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3254,13 +3349,13 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 #, fuzzy #| msgid "IPv4 Addressing Method" msgid "IPv6 Addressing Method" msgstr "IPv4 Adresseringsmetode" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, fuzzy, python-brace-format #| msgid "" #| "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3276,31 +3371,31 @@ msgstr "" "\" vil få {box_name} til at opføre sig som en router, der kan konfigurere " "klienter på dette netværk og dele sin internet-forbindelse." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic" msgstr "Automatisk Opdatering" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic, DHCP only" msgstr "Automatisk Opdatering" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3313,7 +3408,7 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3326,77 +3421,77 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- vælg --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Netværkets synlige navn." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Tilstand" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 #, fuzzy #| msgid "SSID" msgid "BSSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Autentificeringstilstand" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3404,11 +3499,11 @@ msgstr "" "Vælg WPA hvis det trådløse netværk er sikret og kræver at klienter kender " "kodeordet for at oprette forbindelse." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 #, fuzzy #| msgid "OpenVPN" msgid "Open" @@ -3620,7 +3715,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Metode" @@ -3636,6 +3731,7 @@ msgstr "DNS-server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Standard" @@ -3648,7 +3744,7 @@ msgid "This connection is not active." msgstr "Denne forbindelse er ikke aktiv." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Sikkerhed" @@ -3712,13 +3808,13 @@ msgstr "Afstand" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3765,13 +3861,13 @@ msgstr "Opret..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "Virtuelt Privat Netværk (OpenVPN)" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3788,13 +3884,13 @@ msgstr "" "af {box_name}. Du kan også tilgå resten af internettet igennem {box_name} " "for øget sikkerhed og anonymitet." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "Aktiver OpenVPN-server" @@ -3976,7 +4072,7 @@ msgstr "" "Vælg din PageKite-server. Brug \"pagekite.net\" hvis du vil bruge " "standardserveren fra pagekite.net." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Serverport" @@ -4244,13 +4340,13 @@ msgstr "Sluk Nu" msgid "Privoxy" msgstr "Aktiver Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "Privoxy Webproxy" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4261,7 +4357,7 @@ msgstr "" "HTTP-headers, styre adgang og fjerne reklamer og andet vedderstyggeligt " "internetskrald. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4276,7 +4372,7 @@ msgstr "" "på http://config.privoxy.org/ " "eller http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgå {url} med proxy {proxy} ved brug af tcp{kind}" @@ -4285,13 +4381,13 @@ msgstr "Tilgå {url} med proxy {proxy} ved brug af tcp{kind}" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" msgstr "Quassel IRC-klient" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4308,7 +4404,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:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your understøttet klient-applikation. Radicale kan tilgås " "af enhver bruger der har et log ind til {box_name}." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4429,7 +4525,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 #, fuzzy #| msgid "Configuration updated" msgid "Access rights configuration updated" @@ -4554,13 +4650,13 @@ msgstr "" msgid "Roundcube" msgstr "Aktiver Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Email Client" msgstr "Emailklient (Roundcube)" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4572,7 +4668,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:45 +#: plinth/modules/roundcube/__init__.py:47 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -4594,7 +4690,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:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4615,13 +4711,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4629,7 +4725,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4682,25 +4778,25 @@ msgstr "Kite-navn" msgid "Action" msgstr "Handlinger" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} slettet." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Kunne ikke installere applikation: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share disabled." msgstr "{name} slettet." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4710,25 +4806,25 @@ msgstr "Kunne ikke installere applikation: {error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "Webserver" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4764,27 +4860,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Konfiguration opdateret." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4799,7 +4895,7 @@ msgid "Show security report" msgstr "Sikkerhed" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4832,13 +4928,13 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error setting restricted access: {exception}" msgstr "Kunne ikke sætte tidszone: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -4878,18 +4974,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4898,7 +4994,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4909,27 +5005,27 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 #, fuzzy #| msgid "Service" msgid "Server" msgstr "Tjeneste" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 #, fuzzy #| msgid "Server port" msgid "Server port number" msgstr "Serverport" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4994,56 +5090,56 @@ msgstr "Denne tjeneste eksisterer allerede" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 #, fuzzy #| msgid "Add Service" msgid "Add share" msgstr "Tilføj Service" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 #, fuzzy #| msgid "Groups" msgid "With Groups" msgstr "Grupper" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 #, fuzzy #| msgid "Add Service" msgid "Add Share" msgstr "Tilføj Service" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 #, fuzzy #| msgid "Edit User" msgid "Edit Share" msgstr "Rediger Bruger" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 #, fuzzy #| msgid "{name} deleted." msgid "Share deleted." @@ -5107,51 +5203,51 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 #, fuzzy #| msgid "Create User" msgid "Hourly Snapshots Limit" msgstr "Opret Bruger" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 #, fuzzy #| msgid "Delete %(name)s" msgid "Daily Snapshots Limit" msgstr "Slet %(name)s" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 #, fuzzy #| msgid "Delete %(name)s" msgid "Weekly Snapshots Limit" msgstr "Slet %(name)s" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 #, fuzzy #| msgid "Delete %(name)s" msgid "Yearly Snapshots Limit" msgstr "Slet %(name)s" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5237,13 +5333,13 @@ msgstr "Opret Bruger" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "Configuration updated" msgid "Storage snapshots configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Fejl under handling: {0} [{1}] [{2}]" @@ -5354,94 +5450,138 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, 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:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 #, 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:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 #, 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:264 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro-tjenesten er ikke aktiv" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "Ugyldigt værtsnavn" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Download-mappe" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Download-mappe" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "Distribuer Nøgle" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" @@ -5515,11 +5655,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5527,7 +5667,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5538,7 +5678,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" @@ -5548,11 +5688,11 @@ msgstr "Installer denne applikation?" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5560,7 +5700,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5625,81 +5765,81 @@ msgstr "" "du bruger Tor-browseren." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor Skjult Tjeneste" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 #, fuzzy msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Tor videresendelsesport tilgængelig" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registreret" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registreret" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, 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}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Aktiver Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 #, fuzzy #| msgid "Enable Tor" msgid "Enable Tor relay" msgstr "Aktiver Tor" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5707,42 +5847,42 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 #, fuzzy msgid "Enable Tor bridge relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Aktiver Tor Skjult Tjeneste" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as ownCloud or chat) without revealing its location." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" "En skjult tjeneste tillader {box_name} at levere udvalgte tjenester (såsom " "ownCloud og chat) uden at afsløre sin lokation." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Hent softwarepakker over Tor" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5752,7 +5892,7 @@ msgstr "" "Tor-netværket. Dette giver en vis grad af privatlivsbeskyttelse og sikkerhed " "under hentningen." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5814,7 +5954,7 @@ msgstr "En Tor SOCKS-port er tilgængelig på din %(box_name)s TCP-port 9050." msgid "Transmission" msgstr "Transmission BitTorrent" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5823,31 +5963,21 @@ msgstr "" "Transmission håndterer BitTorrent fildeling. Bemærk at BitTorrent ikke " "anonymiserer trafik." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Download-mappe" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Mappe hvori downloadede filer gemmes. Hvis du ændrer standardindstillingen, " -"skal du sikre dig at den nye mappe eksisterer og er skrivbar af brugeren " -"\"debian-transmission\"." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 #, fuzzy #| msgid "News Feed Reader (Tiny Tiny RSS)" msgid "News Feed Reader" msgstr "Nyhedsstrømlæser (Tiny Tiny RSS)" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5857,7 +5987,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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5869,14 +5999,14 @@ msgstr "" "Når aktiveret, vil Tiny Tiny RSS være tilgængelige på stien /tt-rss på webserveren." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5884,7 +6014,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Opdater" @@ -5968,18 +6098,18 @@ msgstr "Opdateringsprocessen er startet." msgid "Starting upgrade failed." msgstr "Kunne ikke starte opdatering." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Brugere og Grupper" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5987,7 +6117,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrol af LDAP-konfiguration \"{search_item}\"" @@ -5996,17 +6126,17 @@ msgstr "Kontrol af LDAP-konfiguration \"{search_item}\"" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Permissions" msgstr "Transmission BitTorrent" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6021,20 +6151,20 @@ msgstr "" "tjenester. De kan også logge ind på systemet gennem SSH og har " "administratorprivilegier (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Kunne ikke oprette LDAP-bruger." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Kunne ikke tilføje ny bruger til gruppen {group}." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6044,39 +6174,39 @@ msgstr "" "sikkert ind på systemet uden et kodeord. Der kan defineres flere nøgler, en " "på hver linje. Tomme linjer og linjer som starter med # bliver ignoreret." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "Kunne ikke omdøbe LDAP-bruger." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Kunne ikke fjerne bruger fra gruppe." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Kunne ikke tilføje bruger til gruppe." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Kunne ikke ændre LDAP-kodeord." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Kunne ikke tilføje ny bruger til admin-gruppen." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Brugerkonto oprettet, du er nu logget ind" @@ -6092,12 +6222,12 @@ msgstr "Gem Kodeord" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Opret Bruger" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Slet Bruger" @@ -6132,7 +6262,7 @@ msgid "Create Account" msgstr "PageKite-konto" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Brugere" @@ -6160,62 +6290,62 @@ msgstr "" msgid "Save Changes" msgstr "Gem Ændringer" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Bruger %(username)s oprettet." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "Bruger %(username)s opdateret." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Rediger Bruger" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "Brugeren {user} slettet." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "Kunne ikke slette LDAP-bruger." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Ændr kodeord" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Kodeord blev ændret." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Fejl under installation" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "Installerer" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "downloader" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "medie-ændring" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -6273,13 +6403,13 @@ msgstr "" "Rapporter venligst fejlen i fejlhåndteringsvørktøjet så vi kan rette den." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, fuzzy, python-format #| msgid "Service discovery server is running" msgid "Service %(service_name)s is running." msgstr "Tjenestesøgningstjenesten er aktiv" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, fuzzy, python-format #| msgid "Service discovery server is not running" msgid "Service %(service_name)s is not running." @@ -6403,6 +6533,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Installation" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6489,46 +6623,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Installation" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Installer denne applikation?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Denne applikation har brug for en opdatering. Opdater nu?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Installer" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Udfører før-installationshandlinger" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Udfører efter-installationshandlinger" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "Installerer %(package_names)s: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% færdig" @@ -6543,18 +6673,27 @@ msgstr "Kør webklient" msgid "Client Apps" msgstr "Quassel IRC-klient" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Applikation aktiveret" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Applikation deaktiveret" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Mappe hvori downloadede filer gemmes. Hvis du ændrer " +#~ "standardindstillingen, skal du sikre dig at den nye mappe eksisterer og " +#~ "er skrivbar af brugeren \"debian-transmission\"." + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN-server er aktiv" @@ -7239,9 +7378,6 @@ msgstr "" #~ msgid "Enable ikiwiki" #~ msgstr "Aktiver Ikiwiki" -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Mumble Tale-tjenesteserver" - #~ msgid "Enable Mumble daemon" #~ msgstr "Aktiver Mumble" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index 80ed0f3c7..e068914cf 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-12-16 22:57+0000\n" "Last-Translator: /rgb \n" "Language-Team: German jeder Benutzer auf {box_name}, der zur Gruppe der " "Administratoren gehört." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Zugangspunkt" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Allgemeine Konfiguration" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -698,13 +720,13 @@ msgstr "Allgemeine Konfiguration" msgid "Configure" msgstr "Konfigurieren" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Domain-Name" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Ungültiger Domain-Name" @@ -733,11 +755,11 @@ msgstr "" "darf als einziges Sonderzeichen das Minuszeichen enthalten. Die Gesamtlänge " "darf 63 Zeichen nicht überschreiten." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Ungültiger Hostname" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -753,11 +775,11 @@ msgstr "" "alphanumerischen Zeichen und Bindestrichen bestehen. Jede Kennung darf " "maximal 63 Zeichen lang sein, die Gesamtlänge des Domainnamen 253 Zeichen." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Webserver-Startseite" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -773,52 +795,52 @@ msgstr "" "(Plinth) eingestellt ist, die Benutzer explizit /plinth oder /freedombox " "eingeben müssen um den {box_name}-Dienst (Plinth) zu erreichen." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Erweiterte Apps und Funktionen anzeigen" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" "Anwendungen und Funktionen, die mehr technisches Wissen erfordern, anzeigen." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Fehler beim Setzen des Hostnamens: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Hostname gesetzt" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Fehler beim Setzen des Domainnamens: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Domainname gesetzt" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Fehler beim Setzen der Webserver-Startseite: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Webserver-Startseite wurde definiert" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Fehler beim Ändern des erweiterten Modus: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "Zeige erweiterte Anwendungen und Funktionen an" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Ausblenden von erweiterten Apps und Funktionen" @@ -826,7 +848,7 @@ msgstr "Ausblenden von erweiterten Apps und Funktionen" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Filesharing/Dateien teilen" @@ -940,16 +962,16 @@ msgstr "Zeitzone gesetzt" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "BitTorrent-Webclient" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 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:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /deluge verfügbar. Das Standardpasswort lautet " "„deluge“, aber dieses sollte sofort nach dem ersten Anmelden geändert werden." -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Dateien mit BitTorrent herunterladen" @@ -985,7 +1007,7 @@ msgstr "" "Der Systemdiagnosetest wird eine Reihe von Tests auf dem System durchführen, " "um zu überprüfen, ob alle Anwendungen und Dienste funktionieren." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Diagnose" @@ -1083,18 +1105,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Update-Einstellungen" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Einstellung unverändert" @@ -1117,10 +1139,10 @@ msgid "" "24h), it may be hard for others to find you on the Internet. This will " "prevent others from finding services which are provided by this {box_name}." msgstr "" -"Wenn Ihr Internetanbieter die öffentliche IP-Adresse regelmäßig ändert (z. " -"B. alle 24 Stunden), kann es für andere schwer werden, Sie im Internet zu " -"finden. Dadurch werden andere daran gehindert, jene Dienste zu finden, die " -"von Ihrer {box_name} angeboten werden." +"Wenn Ihr Internetanbieter die öffentliche IP-Adresse regelmäßig ändert " +"(z. B. alle 24 Stunden), kann es für andere schwer werden, Sie im Internet " +"zu finden. Dadurch werden andere daran gehindert, jene Dienste zu finden, " +"die von Ihrer {box_name} angeboten werden." #: plinth/modules/dynamicdns/__init__.py:48 msgid "" @@ -1144,7 +1166,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Dynamischer Domain-Name" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1154,7 +1176,7 @@ msgstr "" "können in der URL verwendet werden. Details finden Sie in den Update-URL-" "Vorlagen der Beispielanbieter." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1164,7 +1186,7 @@ msgstr "" "Anbieter GnuDIP nicht unterstützt oder der Anbieter nicht aufgeführt ist, " "kann die Aktualisierungs-URL Ihres Anbieters verwendet werden." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1172,20 +1194,20 @@ msgstr "" "Bitte hier keine URL (wie „https://example.com/“) eingeben, sondern nur den " "Hostnamen des GnuDIP-Servers (wie „example.com“)." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "Der öffentliche Domainname, den Sie verwenden möchten, um Ihre FredomBox " "{box_name} zu erreichen." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Verwenden Sie diese Option, wenn Ihr Anbieter eigensignierte Zertifikate " "verwendet." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1193,12 +1215,12 @@ msgstr "" "Ist diese Option ausgewählt, werden der Benutzername und das Passwort des " "Dynamic-DNS-Kontos auch zur HTTP-Authentifizierung verwendet." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" "Dieses Feld leerlassen, wenn Sie das Passwort unverändert lassen möchten." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1211,68 +1233,68 @@ msgstr "" "URL verwendet, um die wahre IP-Adresse zu bestimmen. Die URL sollte nur die " "IP-Adresse des Clients liefern (Beispiel: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "Benutzername, der beim Erstellen des Kontos gewählt wurde." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Dynamisches DNS einschalten" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Typ des Dienstes" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "GnuDIP-Server-Adresse" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Ungültiger Servername" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "URL aktualisieren" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Alle SSL-Zertifikate akzeptieren" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "HTTP-Basisauthentifizierung verwenden" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Benutzername" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Passwort" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Passwort anzeigen" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "Auf die öffentliche IP-Adresse verweisende URL" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Bitte eine Update-URL oder eine GnuDIP-Serveradresse angeben" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Bitte einen GnuDIP-Benutzernamen angeben" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Bitte einen GnuDIP-Domainnamen angeben" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Bitte ein Passwort angeben" @@ -1350,7 +1372,7 @@ msgstr "Letztes Update" msgid "About" msgstr "Über" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1358,15 +1380,15 @@ msgstr "Über" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Status" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Dynamisches DNS konfigurieren" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Status für Dynamisches DNS" @@ -1374,12 +1396,12 @@ msgstr "Status für Dynamisches DNS" msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Chatserver" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1387,7 +1409,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." @@ -1649,7 +1671,7 @@ msgstr "" "Um weiter über Git Betrieb zu lernen, schauen Sie sich die Gitanleitung an." -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "Lese- und Schreibberechtigung auf Git respositories" @@ -1675,7 +1697,7 @@ msgstr "Beschreibung des Archivs" msgid "Optional, for displaying on Gitweb." msgstr "Optional, zur Anzeige auf Gitweb." -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Name des Resposity Besitzers" @@ -1747,33 +1769,33 @@ msgstr "Dieses respository permanent löschen?" msgid "Delete %(name)s" msgstr "%(name)s löschen" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Archiv erstellt." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Beim Erstellen des Repository ist ein Fehler aufgetreten." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Archiv bearbeitet." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Archiv bearbeiten" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Ein Fehler ist bei der Konfiguration aufgetreten." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} gelöscht." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} konnte nicht gelöscht werden: {error}" @@ -1782,8 +1804,8 @@ msgstr "{name} konnte nicht gelöscht werden: {error}" msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Handbuch" @@ -1961,7 +1983,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Mehr erfahren …" @@ -2111,11 +2133,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Anonymisierungsnetzwerk" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2127,7 +2149,7 @@ msgstr "" "Anonymität, indem es verschlüsselten Datenverkehr über ein von Freiwilligen " "betriebenes, weltweit verteiltes Netzwerk sendet." -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." @@ -2135,7 +2157,7 @@ msgstr "" "Mehr Informationen über I2P finden Sie auf deren Projekt-Webseite." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2143,11 +2165,11 @@ msgstr "" "Der erste Besuch der bereitgestellten Weboberfläche leitet den " "Konfigurationsprozess ein." -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "I2P-Anwendung verwalten" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "I2P Proxy" @@ -2160,7 +2182,7 @@ msgstr "Starten" msgid "Proxies" msgstr "Proxys" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Anonyme Torrents" @@ -2205,11 +2227,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki und Blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2228,7 +2250,7 @@ msgstr "" "/ikiwiki bereit (nach " "Erstellung)." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2242,22 +2264,22 @@ msgstr "" "\"{users_url}\">Benutzerkonfiguration können diese Rechte geändert oder " "neue Benutzer angelegt werden." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Wiki-Anwendungen ansehen und bearbeiten" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Admin-Konto-Name" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Admin-Konto-Passwort" @@ -2298,32 +2320,32 @@ msgstr "" "Diese Aktion wird alle Posts, Seiten und Kommentare einschließlich der " "Historie löschen. Dieses Wiki oder den Blog dauerhaft löschen?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} angelegt." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Wiki konnte nicht angelegt werden: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} angelegt." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Blog konnte nicht angelegt werden: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "{title} gelöscht." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "{title} konnte nicht gelöscht werden: {error}" @@ -2332,15 +2354,15 @@ msgstr "{title} konnte nicht gelöscht werden: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby-Server" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2373,11 +2395,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Chatclient" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2498,7 +2520,7 @@ msgstr "" "Es wurden keine Domains konfiguriert. Um Zertifikate erhalten zu können, " "müssen Domains konfiguriert werden." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2507,29 +2529,29 @@ msgstr "" "Zertifikat erfolgreich widerrufen für Domain {domain}. Es kann einige " "Momente dauern, bis dies in Kraft tritt." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Zertifikat erfolgreich bezogen für Domain {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Fehler beim Beziehen des Zertifikats für Domain {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Zertifikat erfolgreich widerrufen für Domain {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}" @@ -2538,7 +2560,7 @@ msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}" msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2556,7 +2578,7 @@ msgstr "" "zwischen den Servern mit Nutzerkonten auf einem beliebigen anderen Server " "kommunizieren." -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @Benutzername:Domainname." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2609,7 +2631,7 @@ msgstr "" "Konfiguration wird nicht unterstützt.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2655,11 +2677,11 @@ msgstr "" "Encrypt, um eines zu beziehen.\n" " " -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Öffentliche Registrierung aktiviert" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Öffentliche Registrierung deaktiviert" @@ -2668,11 +2690,11 @@ msgstr "Öffentliche Registrierung deaktiviert" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2685,7 +2707,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:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2700,7 +2722,7 @@ msgstr "" "Seite spezielle Konto-" "Erstellen nutzen." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2745,23 +2767,23 @@ msgstr "" "können das Wiki lesen oder ändern. Außerdem wird die öffentliche " "Registrierung deaktiviert." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Passwort geändert" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Öffentliche Registrierung aktiviert" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Öffentliche Registrierung deaktiviert" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Privater Modus aktiviert" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Privater Modus ausgeschaltet" @@ -2770,11 +2792,11 @@ msgstr "Privater Modus ausgeschaltet" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Block-Sandkasten" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2832,7 +2854,7 @@ msgstr "" "erleiden." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Adresse" @@ -2841,32 +2863,89 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Einstellung für Maximale Spielerzahl aktualisiert" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Kreativ-Modus-Konfiguration aktualisiert" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "Spieler-gegen-Spieler-Konfiguration aktualisiert" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Schaden-Konfiguration aktualisiert" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Mumble Voice Chat Server" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-Peer-Datenaustausch" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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 " @@ -2876,7 +2955,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:48 +#: plinth/modules/mldonkey/__init__.py:50 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 " @@ -2887,7 +2966,7 @@ msgstr "" "der separaten mobilen oder Desktop-Oberflächen oder über Telnet steuern. " "Siehe Benutzerhandbuch." -#: plinth/modules/mldonkey/__init__.py:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -2895,7 +2974,7 @@ msgstr "" "Auf {box_name} können heruntergeladene Dateien im Verzeichnis /var/lib/" "mldonkey/ gefunden werden." -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Dateien mit eDonkey herunterladen" @@ -3077,15 +3156,15 @@ 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:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Sprachkonferenz" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3093,7 +3172,7 @@ msgstr "" "Mumble ist eine hochwertige quelloffene Software für Telefonie und Chat, mit " "Verschlüsselung und geringer Latenz." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3103,6 +3182,18 @@ msgstr "" "verbinden. Auf Mumble finden Sie " "Anwendungen, um sich vom Desktop oder Android-Gerät mit Mumble zu verbinden." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "SSH-Server-Passwort" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3111,6 +3202,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Passwort erfolgreich geändert." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Namen-Dienste" @@ -3166,23 +3263,23 @@ msgstr "DNSSEC wird auf IPv{kind} verwendet" msgid "Connection Type" msgstr "Verbindungstyp" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Verbindungsname" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Physische Schnittstelle" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "Das Netzwerkgerät, an das diese Verbindung gebunden sein sollte." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Firewall-Zone" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3190,21 +3287,21 @@ msgstr "" "Die Firewall-Zone entscheidet, welche Dienste über diese Schnittstellen zur " "Verfügung stehen. Wählen Sie „Intern“ nur für vertrauenswürdige Netzwerke." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Extern" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPv4-Adressierungsmethode" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3216,19 +3313,19 @@ msgstr "" "{box_name} wie einen Router arbeiten, die Clients dieses Netzwerks " "konfigurieren und die Internetverbindung teilen." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automatisch (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Geteilt" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Netzmaske" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3236,21 +3333,21 @@ msgstr "" "Optionaler Wert. Bleibt dieser leer, wird eine Maske basierend auf der " "Adresse verwendet." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Optionaler Wert." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS-Server" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3259,11 +3356,11 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Zweiter DNS-Server" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3272,11 +3369,11 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "IPv6-Adressierungsmethode" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3285,27 +3382,27 @@ msgstr "" "Die Methode „Automatisch“ lässt {box_name} die Konfiguration von diesem " "Netzwerk holen und macht es zu einem Client." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automatisch" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automatisch, nur DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Ignorieren" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Präfix" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Wert zwischen 1 und 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3314,7 +3411,7 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3323,54 +3420,54 @@ msgstr "" "„Automatisch“ ist, werden die DNS Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- auswählen --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Der sichtbare Name des Netzwerks." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Zugangspunkt" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Frequenzband" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3378,11 +3475,11 @@ msgstr "" "Optionaler Wert. Beschränkung auf den WLAN-Kanal in dem ausgewählten " "Frequenzband. Leer oder 0 bedeutet automatische Auswahl." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3392,11 +3489,11 @@ msgstr "" "einem Zugangspunkt ist nur zugelassen, wenn die BSSID des Zugangspunkts mit " "diesem Wert übereinstimmt. Beispiel: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Authentifizierungsmodus" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3404,11 +3501,11 @@ msgstr "" "Wählen Sie WPA, wenn das WLAN-Netzwerk gesichert ist und ein Passwort für " "die Benutzung erfordert." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Offen" @@ -3617,7 +3714,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Methode" @@ -3633,6 +3730,7 @@ msgstr "DNS-Server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Standard" @@ -3645,7 +3743,7 @@ msgid "This connection is not active." msgstr "Diese Verbindung ist nicht aktiv." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Sicherheit" @@ -3710,13 +3808,13 @@ msgstr "Abstand" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "WLAN" @@ -3759,11 +3857,11 @@ msgstr "Anlegen …" msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Virtuelles Privates Netzwerk" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3780,14 +3878,14 @@ 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:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "Profil herunterladen" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "OpenVPN-Server einschalten" @@ -3959,7 +4057,7 @@ msgstr "" "Wählen Sie Ihren PageKite-Server aus. „pagekite.net“ festlegen, um den " "Standardserver zu verwenden." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Serverport" @@ -4234,11 +4332,11 @@ msgstr "Jetzt herunterfahren" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4249,7 +4347,7 @@ msgstr "" "kontrolliert den Zugang und entfernt Reklame und anderen abscheulichen " "Internet-Müll. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4264,7 +4362,7 @@ msgstr "" "unter http://config.privoxy.org/ " "oder http://p.p einsehen." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Zugang auf {url} über Proxy {proxy} auf TCP{kind}" @@ -4273,11 +4371,11 @@ msgstr "Zugang auf {url} über Proxy {proxy} auf TCP{kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "IRC-Client" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4295,7 +4393,7 @@ msgstr "" "mobilen App können verwendet werden, um sich mit ihm zu verbinden und oder " "zu trennen." -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your notwendig. Radicale kann von jedem Benutzer mit einem " "{box_name}-Konto verwendet werden." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4427,7 +4525,7 @@ msgstr "" "freedombox.adresse>) und ihren Benutzernamen. Wenn Sie auf den Suchen-Knopf " "drücken, werden die bestehenden Kalender und Adressbücher aufgelistet." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Konfiguration der Zugangsrechte aktualisiert" @@ -4542,11 +4640,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "E-Mail-Client" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4559,7 +4657,7 @@ msgstr "" "zum Beispiel MIME-Unterstützung, Adressbuch, Ordnerverwaltung, Suche in den " "Nachrichten und Rechtschreibprüfung." -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 msgid "" "You can access Roundcube from /roundcube. Provide the username and password of the email account " @@ -4574,7 +4672,7 @@ msgstr "" "z. B. imap.example.com. Für IMAP über SSL (empfohlen) geben Sie " "im Feld Server etwas ein wie imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4595,13 +4693,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4609,7 +4707,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4664,25 +4762,25 @@ msgstr "Freigabe hinzugefügt." msgid "Action" msgstr "Aktionen" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Freigabe gelöscht." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Fehler beim Auswerfen des Geräts: {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Freigabe geändert." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -4692,11 +4790,11 @@ msgstr "Fehler beim Auswerfen des Geräts: {error_message}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Websuche" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4704,7 +4802,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:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4712,7 +4810,7 @@ msgstr "" "Searx kann verwendet werden, um Nachverfolgung und Profiling durch " "Suchmaschinen zu vermeiden. Standardmäßig werden keine Cookies gespeichert." -#: plinth/modules/searx/__init__.py:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Suche im Web" @@ -4747,16 +4845,16 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Erlauben, diese Anwendung von jedem nutzen zu lassen, der sie erreichen kann." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Konfiguration aktualisiert." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Konsolen-Logins beschränken (empfohlen)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4767,11 +4865,11 @@ msgstr "" "könnten möglicherweise über die Konsole auf manche Dienste ohne weitere " "Autorisierung zugreifen." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2Ban (empfohlen)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4786,7 +4884,7 @@ msgid "Show security report" msgstr "Berichte über Sicherheitslücken anzeigen" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "Sicherheits-Mitteilungsbericht" @@ -4819,12 +4917,12 @@ msgstr "Aktuelle Sicherheitslücken anzeigen" msgid "Past Vulnerabilities" msgstr "Frühere Sicherheitslücken anzeigen" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Fehler beim Setzen des eingeschränkten Zugriffs: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Sicherheitskonfiguration aktualisiert" @@ -4856,11 +4954,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Socks5-Proxy" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4870,7 +4968,7 @@ msgstr "" "Internetverkehr zu schützen. Er kann verwendet werden, um Internetfilterung " "und -zensur zu umgehen." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4883,7 +4981,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:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4897,25 +4995,25 @@ msgstr "" msgid "Recommended" msgstr "Empfohlen" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Server" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Servername oder IP-Adresse" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Server-Portnummer" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "Passwort, um Daten zu verschlüsseln. Muss mit dem Server-Passwort " "übereinstimmen." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" "Verschlüsselungsverfahren. Muss mit der Einstellung des Servers " @@ -4983,48 +5081,48 @@ msgstr "Eine Freigabe mit diesem Namen existiert bereits." msgid "Shares should be either public or shared with at least one group" msgstr "Freigaben sollten öffentlich sein oder mindestens einer Gruppe haben" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Freigabe hinzufügen" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Derzeit sind keine Freigaben konfiguriert." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Pfad der Festplatte" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Freigegeben über" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "Mit Gruppen" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "öffentlicher Zugang" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Freigabe hinzugefügt." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Freigabe hinzufügen" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Freigabe geändert." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Freigabe bearbeiten" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Freigabe gelöscht." @@ -5101,43 +5199,43 @@ msgid "Enable or disable snapshots before and after software installation" msgstr "" "Schnappschüsse vor und nach Softwareinstallationen ein- oder auschalten" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Grenze für stündliche Speicherauszüge" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Aufbewahren dieser maximalen Anzahl stündlicher Schnappschüsse." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Grenze für tägliche Speicherauszüge" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Aufbewahren dieser maximalen Anzahl täglicher Schnappschüsse." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Grenze für wöchentliche Speicherauszüge" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Aufbewahren dieser maximalen Anzahl wöchentlicher Schnappschüsse." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Grenze für monatliche Speicherauszüge" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Aufbewahren dieser maximalen Anzahl monatlicher Schnappschüsse." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Grenze für jährliche Speicherauszüge" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5221,11 +5319,11 @@ msgstr "Verwalten der Speicherauszüge" msgid "Created snapshot." msgstr "Speicherauszug erstellt." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Konfiguration der Speicherauszüge aktualisiert" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Aktionsfehler: {0} [{1}] [{2}]" @@ -5341,86 +5439,132 @@ msgstr "" "Speichermedien einsehen, Wechselmedien einbinden und aushängen, die Root-" "Partition erweitern usw." -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} Bytes" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "Der Vorgang schlug fehl." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "Der Vorgang wurde abgebrochen." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 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:244 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:247 msgid "The operation timed out." msgstr "Der Vorgang beendet wegen Zeitüberschreitung." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "Dieser Vorgang würde ein Gerät aufwecken, dass sich in einem Tiefschlaf-" "Zustand befindet." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:252 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:254 msgid "The operation has already been cancelled." msgstr "Dieser Vorgang wurde bereits abgebrochen." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 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:262 msgid "The device is already mounted." msgstr "Dieses Gerät ist bereits eingebunden." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "Das Gerät ist nicht eingebunden." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "Die gewünschte Option ist nicht gestattet." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "Das Gerät ist von einem anderen Benutzer eingebunden." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid repository name." +msgid "Invalid directory name." +msgstr "Ungültiger Respositoryname." + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Download-Ordner" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "Das Gerät ist von einem anderen Benutzer eingebunden." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Download-Ordner" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Public share" +msgid "Samba share" +msgstr "Öffentlich freigeben" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Die folgenden Speichermedien werden verwendet:" @@ -5495,11 +5639,11 @@ msgstr "Fehler beim Auswerfen des Geräts: {error_message}" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Dateisynchronisation" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5511,7 +5655,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:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5529,7 +5673,7 @@ msgstr "" "mit unterschiedlichen Ordnern synchronisiert werden. Die Weboberfläche auf " "{box_name} ist nur für Benutzer der „admin“-Gruppe zugänglich." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "Syncthing-Anwendung einstellen" @@ -5537,11 +5681,11 @@ msgstr "Syncthing-Anwendung einstellen" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Verteilter Dateispeicher" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5554,7 +5698,7 @@ msgstr "" "Knoten ausfallen, können Ihre Dateien von den restlichen Knoten " "wiederhergestellt werden." -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5623,56 +5767,56 @@ msgstr "" "Sie den Tor Browser verwenden." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "Tor-Onion-Dienste" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Tor-Socks-Proxy" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Tor-Bridge-Relay" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Tor-Relay-Port ist verfügbar" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3-Transport registriert" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4-Transport registriert" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Tor-Nutzung auf {url} über TCP{kind} bestätigen" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "Geben Sie eine gültige Tor-Bridge ein, in diesem Format: [transport] IP:" "ORPort [fingerprint]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Tor einschalten" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Upstream-Bridges zur Verbindung mit dem Tor-Netzwerk nutzen" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5683,11 +5827,11 @@ msgstr "" "Internetdienstanbieter ihre Verbindung mit dem Tor-Netzwerk zensiert oder " "blockiert. Dies wird Relay-Modi deaktivieren." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Upstream-Bridges" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5698,11 +5842,11 @@ msgstr "" "Informationen von dort kopieren und hier einfügen. Derzeitig unterstützte " "Transports sind „none“, „obfs3“, „obfs4“ und „scamblesuit“." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Tor-Relay einschalten" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5714,11 +5858,11 @@ msgstr "" "Upload-Bandbreite zur Verfügung haben, sollten Sie diese Funktion " "aktivieren. (Es verbessert die Anonymisierung)." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Tor-Bridge-Relay aktivieren" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5728,14 +5872,20 @@ msgstr "" "Datenbank veröffentlicht, anstatt in einer öffentlichen Tor-Relay-Datenbank, " "was die Zensur des Knotens erschwert. Dies hilft anderen, Zensur zu umgehen." -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +#, fuzzy +#| msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Tor-Onion-Service aktivieren" -#: plinth/modules/tor/forms.py:131 -#, python-brace-format +#: plinth/modules/tor/forms.py:120 +#, fuzzy, python-brace-format +#| msgid "" +#| "An onion service will allow {box_name} to provide selected services (such " +#| "as wiki or chat) without revealing its location. Do not use this for " +#| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5743,11 +5893,11 @@ msgstr "" "Chat) ohne Offenlegung seiner Position anzubieten. Verwenden Sie es noch " "nicht, wenn Sie starke Anonymität wünschen." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Softwarepakete über das Tor-Netzwerk herunterladen" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5757,7 +5907,7 @@ msgstr "" "den Aktualisierungen über das Tor-Netzwerk heruntergeladen. Dies erhöht die " "Privatsphäre und Sicherheit während die Software heruntergeladen wird." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" "Tragen Sie mindestens eine Upstream-Bridge ein, um Upstream-Bridges zu " @@ -5811,7 +5961,7 @@ msgstr "Tor SOCKS-Port ist auf Ihrer %(box_name)s auf TCP port 9050 verfügbar." msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5820,29 +5970,19 @@ msgstr "" "Transmission-Daemon verarbeitet BitTorrent-Dateien. Es gilt zu beachten: " "BitTorrent ist nicht anonym!" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Download-Ordner" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Der Ordner, in dem die Downloads gespeichert werden. Wenn der Standardordner " -"verändert wird, muss sicher gestellt sein, dass der Ordner existiert und der " -"Benutzer „debian-transmission“ Schreibrechte für diesen Ordner besitzt." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Feedreader" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5851,7 +5991,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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /tt-rss zur Verfügung. Zugriff hat jeder " "mit einem {box_name}-Benutzerkonto." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for " @@ -5875,7 +6015,7 @@ msgstr "" "nutzen, tragen Sie die URL /tt-rss-app ein." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Lesen und Abonnieren von Neuigkeiten-Feeds" @@ -5883,7 +6023,7 @@ msgstr "Lesen und Abonnieren von Neuigkeiten-Feeds" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Aktualisieren" @@ -5956,11 +6096,11 @@ msgstr "Aktualisierung gestartet." msgid "Starting upgrade failed." msgstr "Starten der Aktualisierung fehlgeschlagen." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Benutzer und Gruppen" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -5971,7 +6111,7 @@ msgstr "" "muss ein Benutzerkonto Teil einer Gruppe sein, damit ein Benutzer auf die " "App zugreifen kann." -#: plinth/modules/users/__init__.py:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5983,7 +6123,7 @@ msgstr "" "dürfen nur Mitglieder der Gruppe admin Apps oder " "Systemeinstellungen ändern." -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP-Eintrag „{search_item}“ prüfen" @@ -5992,15 +6132,15 @@ msgstr "LDAP-Eintrag „{search_item}“ prüfen" msgid "Access to all services and system settings" msgstr "Zugriff auf alle Anwendungen und Systemeinstellungen" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "Benutzername wird bereits verwendet oder ist reserviert." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Berechtigungen" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6015,20 +6155,20 @@ msgstr "" "allen Diensten anmelden und sie können sich auch über SSH im System anmelden " "und besitzen Administratorrechte (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Erstellen des LDAP-Benutzers ist fehlgeschlagen." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Der Benutzer konnte nicht der Gruppe {group} hinzugefügt werden." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Autorisierte SSH-Schlüssel" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6039,39 +6179,39 @@ msgstr "" "eingeben, einen pro Zeile. Leerzeilen und Zeilen, die mit # beginnen, werden " "ignoriert." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "Umbenennen des LDAP-Benutzers fehlgeschlagen." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Entfernen des Benutzers von der Gruppe fehlgeschlagen." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Hinzufügen eines Benutzers zur Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "SSH-Schlüssel kann nicht gesetzt werden." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "Der einzige Administrator des Systems kann nicht gelöscht werden." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Ändern des LDAP-Benutzerpassworts ist fehlgeschlagen." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Hinzufügen eines neuen Benutzers zur admin-Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Einschränken des Konsolenzugriffs fehlgeschlagen." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Benutzerkonto wurde erstellt, Sie sind jetzt angemeldet" @@ -6087,12 +6227,12 @@ msgstr "Passwort speichern" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Benutzer anlegen" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Benutzer löschen" @@ -6125,7 +6265,7 @@ msgid "Create Account" msgstr "Konto erstellen" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Benutzer" @@ -6154,62 +6294,62 @@ msgstr "" msgid "Save Changes" msgstr "Änderungen speichern" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Benutzer %(username)s angelegt." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "Benutzer %(username)s geändert." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Benutzer bearbeiten" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "Benutzer {user} gelöscht." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "Löschen von LDAP-Benutzer fehlgeschlagen." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Passwort ändern" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Passwort erfolgreich geändert." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Allgemein" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Fehler bei der Installation" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "Installation läuft" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "herunterladen" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "Medienwechsel" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "Konfigurationsdatei: {file}" @@ -6263,12 +6403,12 @@ msgstr "" "wir ihn beheben können. Fügen Sie auch das Statusprotokoll dem Fehlerbericht bei." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "Dienst %(service_name)s läuft." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "Dienst %(service_name)s läuft nicht." @@ -6380,6 +6520,10 @@ msgstr "" "Bitte warten Sie, bis %(box_name)s fertig eingerichtet ist. Anschließend " "können Sie Ihre %(box_name)s verwenden." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Installation" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6476,19 +6620,15 @@ msgstr "" "Portweiterleitung auf Ihrem Router einrichten. Sie sollten die folgenden " "Ports für %(service_name)s weiterleiten:" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Installation" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Diese Anwendung installieren?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Die Anwendung muss aktualisiert werden! Jetzt aktualisieren?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6496,28 +6636,28 @@ msgstr "" "Es läuft bereits eine andere Installation oder Update. Bitte warten Sie " "einen Moment, bevor Sie es erneut versuchen." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "Diese Anwendung ist in Ihrer Distribution derzeit nicht erhältlich." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Installieren" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Installationsvorbereitungen werden ausgeführt" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Installationsnachbereitungen werden ausgeführt" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "%(package_names)s wird installiert: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s %% abgeschlossen" @@ -6530,18 +6670,28 @@ msgstr "Webclient starten" msgid "Client Apps" msgstr "Client-Anwendungen" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Anwendung aktiviert" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Anwendung deaktiviert" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Gujarati" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Der Ordner, in dem die Downloads gespeichert werden. Wenn der " +#~ "Standardordner verändert wird, muss sicher gestellt sein, dass der Ordner " +#~ "existiert und der Benutzer „debian-transmission“ Schreibrechte für diesen " +#~ "Ordner besitzt." + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN Server läuft" @@ -7493,9 +7643,6 @@ msgstr "Gujarati" #~ msgid "Generated PGP key." #~ msgstr "PGP Schlüssel erzeugt." -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Mumble Voice Chat Server" - #~ msgid "Enable Mumble daemon" #~ msgstr "Mumble Daemon einschalten" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index df0b651b5..fe24087cd 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,22 +21,22 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:299 +#: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:302 +#: plinth/action_utils.py:301 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:407 +#: plinth/action_utils.py:406 #, python-brace-format msgid "Access URL {url} on tcp{kind}" msgstr "" -#: plinth/action_utils.py:411 +#: plinth/action_utils.py:410 #, python-brace-format msgid "Access URL {url}" msgstr "" @@ -51,7 +51,7 @@ msgstr "" msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:37 plinth/views.py:61 +#: plinth/context_processors.py:36 plinth/views.py:61 msgid "FreedomBox" msgstr "" @@ -59,38 +59,38 @@ msgstr "" msgid "Enable application" msgstr "" -#: plinth/forms.py:55 +#: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" -#: plinth/forms.py:57 +#: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -#: plinth/forms.py:65 +#: plinth/forms.py:64 msgid "Language" msgstr "" -#: plinth/forms.py:66 +#: plinth/forms.py:65 msgid "Language to use for presenting this web interface" msgstr "" -#: plinth/forms.py:73 +#: plinth/forms.py:72 msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:73 plinth/templates/setup.html:57 +#: plinth/middleware.py:72 plinth/templates/setup.html:45 msgid "Application installed." msgstr "" -#: plinth/middleware.py:79 +#: plinth/middleware.py:78 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:83 +#: plinth/middleware.py:82 #, python-brace-format msgid "Error installing application: {error}" msgstr "" @@ -101,7 +101,7 @@ msgstr "" msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:58 +#: plinth/modules/apache/__init__.py:57 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -191,7 +191,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" msgstr "" @@ -261,27 +261,27 @@ msgstr "" msgid "Connection refused" msgstr "" -#: plinth/modules/backups/repository.py:63 +#: plinth/modules/backups/repository.py:62 msgid "Repository not found" msgstr "" -#: plinth/modules/backups/repository.py:69 +#: plinth/modules/backups/repository.py:67 msgid "Incorrect encryption passphrase" msgstr "" -#: plinth/modules/backups/repository.py:74 +#: plinth/modules/backups/repository.py:72 msgid "SSH access denied" msgstr "" -#: plinth/modules/backups/repository.py:80 +#: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" -#: plinth/modules/backups/repository.py:154 +#: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." msgstr "" -#: plinth/modules/backups/repository.py:342 +#: plinth/modules/backups/repository.py:337 #, python-brace-format msgid "{box_name} storage" msgstr "" @@ -336,7 +336,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -345,9 +345,9 @@ msgid "Delete this archive permanently?" msgstr "" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "" @@ -582,9 +582,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -592,11 +592,11 @@ msgstr "" msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -605,18 +605,38 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, 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:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -624,13 +644,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -655,11 +675,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -670,11 +690,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -684,51 +704,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -736,7 +756,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -834,23 +854,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -868,7 +888,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -956,18 +976,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1006,46 +1026,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1054,68 +1074,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1174,7 +1194,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1182,15 +1202,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1198,18 +1218,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1446,7 +1466,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1516,33 +1536,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1551,8 +1571,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1691,7 +1711,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1805,11 +1825,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1817,23 +1837,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1846,7 +1866,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1882,18 +1902,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1902,22 +1922,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1956,32 +1976,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1990,15 +2010,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2025,11 +2045,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2134,36 +2154,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2172,7 +2192,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2182,7 +2202,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2219,7 +2239,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2251,11 +2271,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2264,11 +2284,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2276,7 +2296,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2285,7 +2305,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2321,23 +2341,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2346,11 +2366,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2396,7 +2416,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2405,52 +2425,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2612,27 +2687,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2641,6 +2726,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2687,43 +2776,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2731,176 +2820,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3107,7 +3196,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3123,6 +3212,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3135,7 +3225,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3188,13 +3278,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3237,11 +3327,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3252,13 +3342,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3386,7 +3476,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3627,18 +3717,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3648,7 +3738,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3657,11 +3747,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3672,7 +3762,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3881,7 +3971,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3895,13 +3985,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3909,7 +3999,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3958,20 +4048,20 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -3980,23 +4070,23 @@ msgstr "" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4028,27 +4118,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4061,7 +4151,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4090,12 +4180,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4123,18 +4213,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4143,7 +4233,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4154,23 +4244,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4229,48 +4319,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4328,43 +4418,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4440,11 +4530,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4543,83 +4633,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4685,11 +4811,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4697,7 +4823,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4708,7 +4834,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4716,11 +4842,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4728,7 +4854,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4784,76 +4910,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4861,41 +4987,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4944,53 +5070,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -4998,7 +5117,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5064,18 +5183,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5083,7 +5202,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5092,15 +5211,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5109,59 +5228,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5177,12 +5296,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5212,7 +5331,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5238,62 +5357,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5336,12 +5455,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5451,6 +5570,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5530,46 +5653,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5582,14 +5701,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 2bf6da093..4d3306de2 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -20,22 +20,22 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:299 +#: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:302 +#: plinth/action_utils.py:301 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:407 +#: plinth/action_utils.py:406 #, python-brace-format msgid "Access URL {url} on tcp{kind}" msgstr "" -#: plinth/action_utils.py:411 +#: plinth/action_utils.py:410 #, python-brace-format msgid "Access URL {url}" msgstr "" @@ -50,7 +50,7 @@ msgstr "" msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:37 plinth/views.py:61 +#: plinth/context_processors.py:36 plinth/views.py:61 msgid "FreedomBox" msgstr "" @@ -58,38 +58,38 @@ msgstr "" msgid "Enable application" msgstr "" -#: plinth/forms.py:55 +#: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" -#: plinth/forms.py:57 +#: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -#: plinth/forms.py:65 +#: plinth/forms.py:64 msgid "Language" msgstr "" -#: plinth/forms.py:66 +#: plinth/forms.py:65 msgid "Language to use for presenting this web interface" msgstr "" -#: plinth/forms.py:73 +#: plinth/forms.py:72 msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:73 plinth/templates/setup.html:57 +#: plinth/middleware.py:72 plinth/templates/setup.html:45 msgid "Application installed." msgstr "" -#: plinth/middleware.py:79 +#: plinth/middleware.py:78 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:83 +#: plinth/middleware.py:82 #, python-brace-format msgid "Error installing application: {error}" msgstr "" @@ -100,7 +100,7 @@ msgstr "" msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:58 +#: plinth/modules/apache/__init__.py:57 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -190,7 +190,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" msgstr "" @@ -260,27 +260,27 @@ msgstr "" msgid "Connection refused" msgstr "" -#: plinth/modules/backups/repository.py:63 +#: plinth/modules/backups/repository.py:62 msgid "Repository not found" msgstr "" -#: plinth/modules/backups/repository.py:69 +#: plinth/modules/backups/repository.py:67 msgid "Incorrect encryption passphrase" msgstr "" -#: plinth/modules/backups/repository.py:74 +#: plinth/modules/backups/repository.py:72 msgid "SSH access denied" msgstr "" -#: plinth/modules/backups/repository.py:80 +#: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" -#: plinth/modules/backups/repository.py:154 +#: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." msgstr "" -#: plinth/modules/backups/repository.py:342 +#: plinth/modules/backups/repository.py:337 #, python-brace-format msgid "{box_name} storage" msgstr "" @@ -335,7 +335,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -344,9 +344,9 @@ msgid "Delete this archive permanently?" msgstr "" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "" @@ -581,9 +581,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -591,11 +591,11 @@ msgstr "" msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -604,18 +604,38 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, 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:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -623,13 +643,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -654,11 +674,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -669,11 +689,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -683,51 +703,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -735,7 +755,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -833,23 +853,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -867,7 +887,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -955,18 +975,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1005,46 +1025,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1053,68 +1073,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1173,7 +1193,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1181,15 +1201,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1197,18 +1217,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1445,7 +1465,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1515,33 +1535,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1550,8 +1570,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1690,7 +1710,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1804,11 +1824,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1816,23 +1836,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1845,7 +1865,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1881,18 +1901,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1901,22 +1921,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1955,32 +1975,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1989,15 +2009,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2024,11 +2044,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2133,36 +2153,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2171,7 +2191,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2181,7 +2201,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2218,7 +2238,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2250,11 +2270,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2263,11 +2283,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2275,7 +2295,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2284,7 +2304,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2320,23 +2340,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2345,11 +2365,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2395,7 +2415,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2404,52 +2424,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2611,27 +2686,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2640,6 +2725,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2686,43 +2775,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2730,176 +2819,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3106,7 +3195,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3122,6 +3211,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3134,7 +3224,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3187,13 +3277,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3236,11 +3326,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3251,13 +3341,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3385,7 +3475,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3626,18 +3716,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3647,7 +3737,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3656,11 +3746,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3671,7 +3761,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3880,7 +3970,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3894,13 +3984,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3908,7 +3998,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3957,20 +4047,20 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -3979,23 +4069,23 @@ msgstr "" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4027,27 +4117,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4060,7 +4150,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4089,12 +4179,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4122,18 +4212,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4142,7 +4232,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4153,23 +4243,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4228,48 +4318,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4327,43 +4417,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4439,11 +4529,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4542,83 +4632,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4684,11 +4810,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4696,7 +4822,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4707,7 +4833,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4715,11 +4841,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4727,7 +4853,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4783,76 +4909,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4860,41 +4986,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4943,53 +5069,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -4997,7 +5116,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5063,18 +5182,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5082,7 +5201,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5091,15 +5210,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5108,59 +5227,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5176,12 +5295,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5211,7 +5330,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5237,62 +5356,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5335,12 +5454,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5450,6 +5569,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5529,46 +5652,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5581,14 +5700,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index 4fdb85bc5..2538fae9e 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-12-11 16:43+0000\n" "Last-Translator: Luis A. Arizmendi \n" "Language-Team: Spanish any user on {box_name} " @@ -676,11 +676,33 @@ msgstr "" "Puede acceder cualquier usuario/a en {box_name} " "que pertenezca al grupo «admin»." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Punto de acceso" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Configuración general" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -688,13 +710,13 @@ msgstr "Configuración general" msgid "Configure" msgstr "Configurar" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Nombre de dominio" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Nombre de dominio no válido" @@ -723,11 +745,11 @@ msgstr "" "número y solo puede contener letras, números y guiones. Su longitud puede " "ser de hasta 63 caracteres." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Nombre de anfitrión no válido" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -744,11 +766,11 @@ msgstr "" "La longitud de cada palabra puede ser de hasta 63 caracteres y la del nombre " "de dominio de hasta 253." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Página de inicio del servidor web" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -765,52 +787,52 @@ msgstr "" "explícitamente «/plinth» o «/freedombox» para acceder al servicio (Plinth) " "de {box_name}." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Mostrar aplicaciones y funciones avanzadas" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" "Muestra aplicaciones y funciones que requieren mayor conocimiento técnico." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Error al definir el nombre de anfitrión: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Asignar nombre de anfitrión" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Error al establecer nombre de dominio: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Asignar nombre de dominio" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Error al configurar la página de inicio del servidor web: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Página de inicio del servidor web configurada" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Error al cambiar al modo avanzado: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "Mostrando aplicaciones y funciones avanzadas" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Ocultando aplicaciones y funciones avanzadas" @@ -818,7 +840,7 @@ msgstr "Ocultando aplicaciones y funciones avanzadas" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Compartir archivos" @@ -931,16 +953,16 @@ msgstr "Zona horaria asignada" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "Cliente web de BitTorrent" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 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:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -948,8 +970,8 @@ 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:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Descargar archivos usando aplicaciones BitTorrent" @@ -969,7 +991,7 @@ msgstr "" "El test de diagnóstico del sistema ejecuta una serie de comprobaciones para " "confirmar que las aplicaciones y servicios están funcionando como se espera." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Test de diagnóstico" @@ -1067,18 +1089,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Actualizar configuración" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Configuración sin cambio" @@ -1126,7 +1148,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Nombre de dominio dinámico" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1136,7 +1158,7 @@ msgstr "" "pueden usar en la URL. Para más información consulte las plantillas para " "actualizar URL de los ejemplos incluidos." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1146,7 +1168,7 @@ msgstr "" "el protocolo GnuDIP o no aparece en el listado deberá usar la URL de " "actualización de su proveedor." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1154,18 +1176,18 @@ msgstr "" "Por favor no introduzca una URL (\"https://ejemplo.com/\"), solo el nombre " "de su servidor GnuDIP (\"ejemplo.com\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "Nombre de dominio público que quiere usar para para identificar su " "{box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "Elija esta opción si su proveedor usa certificados autofirmados." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1173,11 +1195,11 @@ msgstr "" "Si selecciona esta opción su nombre de usuaria/o y clave se emplearán en la " "autenticación básica de HTTP." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "Deje vacío este campo si quiere conservar su clave actual." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1190,70 +1212,70 @@ msgstr "" "número IP real. La URL debería devolver simplemente el número IP del cliente " "(p.e. http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "El nombre de usuaria/o que empleó al crear la cuenta." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Activar DNS dinámico" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Tipo de servicio" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "Dirección del servidor GnuDIP" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Nombre de servidor no válido" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "URL de actualización" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Aceptar todos los certificados SSL" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Usar autenticación básica de HTTP" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Nombre de usuaria/o" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Clave de acceso" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Mostrar clave de acceso" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "URL para consultar la IP pública" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" "Por favor indique una URL de actualización o la dirección de un servidor " "GnuDIP" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Por favor indique un nombre de usuaria/o GnuDIP" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Por favor indique un nombre de dominio GnuDIP" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Por favor indique una clave de acceso" @@ -1330,7 +1352,7 @@ msgstr "Última actualización" msgid "About" msgstr "Acerca de" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1338,15 +1360,15 @@ msgstr "Acerca de" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Estado" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Configurar DNS dinámico" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Estado del DNS dinámico" @@ -1354,12 +1376,12 @@ msgstr "Estado del DNS dinámico" msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Servidor de Chat" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1367,7 +1389,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." @@ -1623,7 +1645,7 @@ msgstr "" "Para aprender más acerca de cómo usar Git visita el tutorial de Git." -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "Acceso de lectura y escritura para repositorios Git" @@ -1648,7 +1670,7 @@ msgstr "Descripción del repositorio" msgid "Optional, for displaying on Gitweb." msgstr "Opcional, para mostrar en Gitweb." -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Nombre del dueño del repositorio" @@ -1718,33 +1740,33 @@ msgstr "¿Eliminar este repositorio definitivamente?" msgid "Delete %(name)s" msgstr "Eliminar %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Repositorio creado." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Ha habido un error al crear el repositorio." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Repositorio editado." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Editar repositorio" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Ha habido un error en la configuración." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} eliminado." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "No se pudo eliminar {name}: {error}" @@ -1753,8 +1775,8 @@ msgstr "No se pudo eliminar {name}: {error}" msgid "Documentation" msgstr "Documentación" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -1928,7 +1950,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Aprenda más..." @@ -2078,11 +2100,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Red anónima" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2094,7 +2116,7 @@ msgstr "" "anonimato al enviar trafico cifrado a través de una red mantenida por " "voluntarios alrededor del mundo." -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." @@ -2102,7 +2124,7 @@ msgstr "" "Para ampliar información sobre I2P visite el sitio web del proyecto." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2110,11 +2132,11 @@ msgstr "" "La primer visita a la interfaz web provista iniciará el proceso de " "configuración." -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "Administrar la aplicación I2P" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "Proxy I2P" @@ -2127,7 +2149,7 @@ msgstr "Ejecutar" msgid "Proxies" msgstr "Proxy" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Torrents anónimos" @@ -2172,11 +2194,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki y Blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2186,7 +2208,7 @@ msgstr "" "de marcado, Markdown incluido, y funcionalidades comunes de los blogs tal " "como comentarios o fuentes RSS." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2200,22 +2222,22 @@ msgstr "" "\"{users_url}\">configuración de usuarios puede modificar estos permisos " "o añadir nuevos usuarios." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Aplicaciones wiki para ver y editar" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tipo" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Nombre de la cuenta de administración" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Clave de acceso de la cuenta de administración" @@ -2256,32 +2278,32 @@ msgstr "" "Esta acción borrará todas las entradas, páginas y comentarios incluido el " "historial. ¿Eliminar este wiki o blog definitivamente?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} creado." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "No se pudo crear el wiki: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} creado." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "No se pudo crear el blog: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "{title} eliminado." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "No se pudo eliminar {title}: {error}" @@ -2290,15 +2312,15 @@ msgstr "No se pudo eliminar {title}: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Servidor Gobby" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2331,11 +2353,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Cliente de Chat" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2454,7 +2476,7 @@ msgstr "" "No se ha configurado ningún dominio. Configure " "alguno para poder asignarle un certificado." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2463,29 +2485,29 @@ msgstr "" "El certificado para el dominio {domain} ha sido revocado con éxito. " "Necesitará unos momentos para tener efecto." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Falló la revocación del certificado para el dominio {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Se ha obtenido con éxito el certificado para el dominio {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Falló la obtención del certificado para el dominio {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "El certificado para el dominio {domain} ha sido eliminado con éxito" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Falló la eliminación del certificado para el dominio {domain}: {error}" @@ -2494,7 +2516,7 @@ msgstr "Falló la eliminación del certificado para el dominio {domain}: {error} msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2511,7 +2533,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:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2563,7 +2585,7 @@ msgstr "" " de dominio una vez hecha la configuración inicial.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2611,11 +2633,11 @@ msgstr "" " para obtener uno.\n" " " -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Registro público activado" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Registro público desactivado" @@ -2624,11 +2646,11 @@ msgstr "Registro público desactivado" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2640,7 +2662,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:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2654,7 +2676,7 @@ msgstr "" "MediaWiki en la página Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2699,23 +2721,23 @@ msgstr "" "una cuenta pueden leer/escribir en el wiki. El registro público también será " "desactivado." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Clave actualizada" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Habilitado el registro público" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Inhabilitado el registro público" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Activado el modo privado" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Desactivado el modo privado" @@ -2724,11 +2746,11 @@ msgstr "Desactivado el modo privado" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Sandbox de bloques" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2786,7 +2808,7 @@ msgstr "" "ningún tipo." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Dirección" @@ -2795,32 +2817,89 @@ msgstr "Dirección" msgid "Port" msgstr "Puerto" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Configuración de número máximo de jugadoras/es actualizada" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Configuración del modo creativo actualizada" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "Configuración PVP actualizada" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Configuración de daño actualizada" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Servidor Mumble de chat de voz" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "Compartir archivos entre pares" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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 " @@ -2830,7 +2909,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:48 +#: plinth/modules/mldonkey/__init__.py:50 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 " @@ -2841,7 +2920,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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -2849,7 +2928,7 @@ msgstr "" "Los archivos descargados en {box_name} se encuentran en el directorio «/var/" "lib/mldonkey/»." -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Descargar archivos usando aplicaciones para eDonkey" @@ -3028,15 +3107,15 @@ 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:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Chat de voz" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3044,7 +3123,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:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3054,6 +3133,18 @@ msgstr "" "disponibles Clientes para conectar desde " "sus dispositivos de escritorio o Android." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "Contraseña del servidor SSH" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3062,6 +3153,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Clave de acceso cambiada con éxito." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Servicios de nombres" @@ -3116,23 +3213,23 @@ msgstr "DNSSEC en uso sobre IPv{kind}" msgid "Connection Type" msgstr "Tipo de conexión" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Nombre de conexión" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Interfaz física" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "Dispositivo de red al que se debería unir esta conexión." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Zona Firewall" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3140,21 +3237,21 @@ msgstr "" "La zona del firewall controlará qué servicios están disponibles en estas " "interfaces. Seleccione Interna solo para redes de confianza." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Externa" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "Direccionamiento IPv4" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3166,19 +3263,19 @@ msgstr "" "{box_name} se comporte como un router, configure los clientes de esta red y " "comparta su conexión a Internet." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automático (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Compartido" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Máscara de red" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3186,21 +3283,21 @@ msgstr "" "Valor opcional. Si no se especifica, se usará una máscara de red por defecto " "basada en la dirección asignada." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Puerta de enlace" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Valor opcional." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "Servidor DNS" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3208,11 +3305,11 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv4 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Servidor DNS secundario" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3220,11 +3317,11 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv4 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "Direccionamiento IPv6" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3233,27 +3330,27 @@ msgstr "" "Los métodos \"automáticos\" harán que {box_name} solicite su configuración a " "la red y actúe como cualquier otro cliente." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automática" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automático, solo DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Ignorar" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Prefijo" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Valor entre 1 y 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3261,7 +3358,7 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv6 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3269,54 +3366,54 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv6 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- seleccionar --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Nombre visible de la red." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modo" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infraestructura" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Punto de acceso" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Banda de frecuencia" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Canal" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3324,11 +3421,11 @@ msgstr "" "Valor opcional. Canal inalámbrico para restringir en la frecuencia " "seleccionada. Valor 0 o en blanco implica selección automática." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3338,11 +3435,11 @@ msgstr "" "a un punto de acceso si su BSSID coincide con el facilitado. Ejemplo: " "00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Modo de autenticación" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3350,11 +3447,11 @@ msgstr "" "Seleccione WPA si la red inalámbrica está protegida y se necesita una clave " "para conectar." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Abierto" @@ -3563,7 +3660,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Método" @@ -3579,6 +3676,7 @@ msgstr "Servidor DNS" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Por defecto" @@ -3591,7 +3689,7 @@ msgid "This connection is not active." msgstr "Esta conexión no está activa." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Protección" @@ -3654,13 +3752,13 @@ msgstr "Espaciado" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3703,11 +3801,11 @@ msgstr "Crear…" msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Red privada virtual" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3724,14 +3822,14 @@ 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:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "Descargar perfil" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "Activar servidor OpenVPN" @@ -3784,8 +3882,8 @@ msgid "" msgstr "" "Para conectar a la VPN de %(box_name)s necesita descargar un perfil y " "añadirlo a un cliente OpenVPN en su ordenador de escritorio o móvil. Hay " -"clientes OpenVPN para la mayoría de las plataformas. Haga clic en \"" -"Aprender más...\" para información sobre los clientes recomendados y cómo " +"clientes OpenVPN para la mayoría de las plataformas. Haga clic en " +"\"Aprender más...\" para información sobre los clientes recomendados y cómo " "configurarlos." #: plinth/modules/openvpn/templates/openvpn.html:100 @@ -3869,9 +3967,8 @@ msgid "" msgstr "" "PageKite evita NAT, firewalls y limitaciones de direcciones IP mediante una " "combinación de túneles y proxys inversos. Puede elegir cualquier proveedor " -"de servicios pagekite, por ejemplo pagekite.net. En el futuro será posible usar su amigable {box_name} " -"para esto." +"de servicios pagekite, por ejemplo pagekite." +"net. En el futuro será posible usar su amigable {box_name} para esto." #: plinth/modules/pagekite/__init__.py:87 msgid "PageKite Domain" @@ -3889,7 +3986,7 @@ msgstr "" "Seleccione su servidor pagekite. Elija \"pagekite.net\" para usar el " "servidor pagekite por defecto." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Puerto del servidor" @@ -4155,11 +4252,11 @@ msgstr "Apagar ahora" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Proxy Web" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4170,7 +4267,7 @@ msgstr "" "cabeceras HTTP, controlar el acceso y eliminar publicidad y otra basura de " "Internet. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4185,7 +4282,7 @@ msgstr "" "documentación en http://config." "privoxy.org/ o http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Acceso a {url} con proxy {proxy} en tcp {kind}" @@ -4194,11 +4291,11 @@ msgstr "Acceso a {url} con proxy {proxy} en tcp {kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "Cliente IRC" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4215,7 +4312,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:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your . Cualquier persona autenticada en {box_name} puede acceder a " "Radicale." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4345,7 +4442,7 @@ msgstr "" "address>) y su nombre de usuario. Pulsando en el botón de búsqueda le " "mostrará un listado de los calendarios y agendas existentes." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Configuración de derechos de acceso actualizada" @@ -4394,11 +4491,11 @@ msgid "" "and re-enable it." msgstr "" "Nota: Antes de usar repro tiene que configurar los dominios " -"y usuarias/os con el Panel web de configuración. Usuarias/os en el grupo " -"admin podrán acceder al panel de configuración. Después de " -"configurar el dominio es necesario reiniciar el servicio repro: desactive el " -"servicio y vuélvalo a activar." +"y usuarias/os con el Panel web de configuración. Usuarias/os en el grupo admin " +"podrán acceder al panel de configuración. Después de configurar el dominio " +"es necesario reiniciar el servicio repro: desactive el servicio y vuélvalo a " +"activar." #: plinth/modules/repro/manifest.py:30 msgid "Jitsi Meet" @@ -4459,11 +4556,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "Cliente de correo" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4475,7 +4572,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:45 +#: plinth/modules/roundcube/__init__.py:47 msgid "" "You can access Roundcube from /roundcube. Provide the username and password of the email account " @@ -4484,14 +4581,14 @@ msgid "" "(recommended), fill the server field like imaps://imap.example.com." msgstr "" -"Puede acceder a Roundcube en roundcube. Debe facilitar el nombre de usuaria/o y la clave de la " +"Puede acceder a Roundcube en roundcube. Debe facilitar el nombre de usuaria/o y la clave de la " "cuenta de correo a la que desea acceder, además del nombre de dominio del " "servidor IMAP de su proveedor, por ejemplo imap.ejemplo.com. " "Para IMAP sobre SSL (recomendado) rellene el campo del servidor como " "imaps://imap.ejemplo.com." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4511,7 +4608,7 @@ msgstr "" msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -4519,7 +4616,7 @@ msgstr "" "Samba permite compartir archivos y carpetas entre FreedomBox y otras " "computadoras en su red local." -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4531,7 +4628,7 @@ msgstr "" "local, y pueden encontrarse en la sección \"Red local\" de su gestor de " "archivos." -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "Acceso a carpetas compartidas desde el servidor" @@ -4584,20 +4681,20 @@ msgstr "Nombre de compartición" msgid "Action" msgstr "Acción" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "Compartición activada." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Error al activar compartición: {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "Compartición desactivada." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Error al desactivar compartición: {error_message}" @@ -4606,11 +4703,11 @@ msgstr "Error al desactivar compartición: {error_message}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Buscador web" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4618,7 +4715,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:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4626,7 +4723,7 @@ 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Buscar en la web" @@ -4661,16 +4758,16 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Permitir que esta aplicación la use cualquiera que pueda acceder a ella." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Configuración actualizada." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Acceso a consola restringido (recomendada)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4680,11 +4777,11 @@ msgstr "" "pueden acceder a la consola por SSH. Desde la consola se podrá acceder a " "ciertos servicios sin autenticación posterior." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2Ban (recomendado)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4700,7 +4797,7 @@ msgid "Show security report" msgstr "Mostrar informe de seguridad" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "Informe de Seguridad" @@ -4733,12 +4830,12 @@ msgstr "Vulnerabilidades Actuales" msgid "Past Vulnerabilities" msgstr "Vulnerabilidades Anteriores" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Error al definir el acceso restringido: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Configuración de seguridad actualizada" @@ -4761,8 +4858,8 @@ msgid "" "only supports a single user account, which you will need to setup on the " "initial visit." msgstr "" -"Cuando se activa Shaarli está disponible en la dirección /shaarli de su servidor. Note que Shaarli " +"Cuando se activa Shaarli está disponible en la dirección /shaarli de su servidor. Note que Shaarli " "solo soporta una cuenta de usuaria/o, que debe configurar en el primer " "acceso." @@ -4770,11 +4867,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Proxy Socks5" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4784,7 +4881,7 @@ msgstr "" "tráfico en Internet. Se puede usar para eludir el filtrado o la censura de " "Internet." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4797,7 +4894,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:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4810,23 +4907,23 @@ msgstr "" msgid "Recommended" msgstr "Recomendado" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Servidor" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Nombre del servidor o dirección IP" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Número de puerto del servidor" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "Clave para cifrar los datos. Debe coincidir con la clave del servidor." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "Método de cifrado. Debe coincidir con la configuración del servidor." @@ -4895,48 +4992,48 @@ msgstr "" "Las carpetas compartidas deben ser públicas o estar compartidas con al menos " "un grupo" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Añadir compartición" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Actualmente no hay comparticiones configuradas." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Ruta de acceso en disco" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Compartido por" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "Con los grupos" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "Acceso público" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Compartición añadida." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Añadir compartición" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Compartición editada." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Editar compartición" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Compartición eliminada." @@ -5013,43 +5110,43 @@ msgstr "" "Active o desactive las instantáneas antes y después de la instalación del " "software" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Límite de instantáneas por hora" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Conservar el máximo número de instantáneas por hora." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Límite diario de instantáneas" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Conservar el máximo número de instantáneas diarias." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Límite semanal de instantáneas" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Conservar el máximo número de instantáneas semanales." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Límite mensual de instantáneas" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Conservar el máximo número de instantáneas mensuales." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Límite anual de instantáneas" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5132,11 +5229,11 @@ msgstr "Gestionar instantáneas" msgid "Created snapshot." msgstr "Instantánea creada." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Configuración de almacenamiento de instantáneas actualizada" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Acción de error: {0} [{1}] [{2}]" @@ -5248,83 +5345,129 @@ 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:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "Falló la operación." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "Se ha cancelado la operación." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "El dispositivo ya se está desmontando." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 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:247 msgid "The operation timed out." msgstr "La operación agotó el tiempo." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 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:254 msgid "The operation has already been cancelled." msgstr "Ya se ha cancelado la operación." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 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:262 msgid "The device is already mounted." msgstr "El dispositivo ya está montado." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "El dispositivo no está montado." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "La operación solicitada no está permitida." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "El dispositivo está ya montado por otro usuario." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid repository name." +msgid "Invalid directory name." +msgstr "Nombre de repositorio no válido." + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Directorio de descarga" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "El dispositivo está ya montado por otro usuario." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Directorio de descarga" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Samba" +msgid "Samba share" +msgstr "Samba" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Se están usando los siguientes dispositivos de almacenamiento:" @@ -5398,11 +5541,11 @@ msgstr "Error al expulsar el dispositivo: {error_message}" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Sincronización de archivos" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5414,7 +5557,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:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5431,7 +5574,7 @@ msgstr "" "sincronizarse con un conjunto distinto de carpetas. La interfaz web en " "{box_name} solo está disponible para quienes pertenezcan al grupo \"admin\"." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "Administrar Syncthing" @@ -5439,11 +5582,11 @@ msgstr "Administrar Syncthing" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Almacén de archivos distribuido" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5456,7 +5599,7 @@ msgstr "" "de los nodos fallara, sus archivos seguirían estando disponibles a través " "del resto de nodos." -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5524,56 +5667,56 @@ msgstr "" "download/download-easy.html.en\">Navegador Tor para tener la mejor " "protección cuando navega por la red." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "Servicio Tor Onion" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Proxy Socks para Tor" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Puente de retransmisión Tor" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Puerto de servidor Tor disponible" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Transporte Obfs3 registrado" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Transporte Obfs4 registrado" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmar uso de Tor en {url} sobre tcp {kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "Especifique un puente válido con este formato: [transport] IP:ORPort " "[fingerprint]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Activar Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Utilice puentes de subida para conectar a una red Tor" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5584,11 +5727,11 @@ msgstr "" "(ISP) bloquea o censura las conexiones a la red Tor. Esto desactivará los " "modos de reenvío." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Puentes de subida" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5599,11 +5742,11 @@ msgstr "" "Los tipos de transporte actualmente soportados son ninguno, obfs3, obfs4 y " "scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Activar Tor" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5614,11 +5757,11 @@ msgstr "" "ancho de banda a la red Tor. Actívelo si dispone de más de 2 megabits/s de " "ancho de banda para descarga y subida." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Activar puente de retransmisión Tor" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5628,14 +5771,20 @@ msgstr "" "Tor en vez de en la base de datos pública de Tor, lo que dificulta censurar " "este nodo. Ayuda a otros usuarios a esquivar la censura." -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +#, fuzzy +#| msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Activar el servicio Tor Onion" -#: plinth/modules/tor/forms.py:131 -#, python-brace-format +#: plinth/modules/tor/forms.py:120 +#, fuzzy, python-brace-format +#| msgid "" +#| "An onion service will allow {box_name} to provide selected services (such " +#| "as wiki or chat) without revealing its location. Do not use this for " +#| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5643,11 +5792,11 @@ msgstr "" "servicios (como wiki o chat) sin revelar su localización. No lo emplee para " "un anonimato fuerte." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Descarga de paquetes de software con Tor" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5657,7 +5806,7 @@ msgstr "" "descargarán a través de la red Tor. De esta forma se añade un grado de " "privacidad y seguridad durante la descarga." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" "Especifique al menos un puente de subida para usar los puentes de subida." @@ -5712,7 +5861,7 @@ msgstr "" msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5721,29 +5870,19 @@ msgstr "" "Transmission controla la compartición de archivos. Recuerde que BitTorrent " "no es anónimo." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Directorio de descarga" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Directorio en el que se guardan las descargas. Si cambia el directorio por " -"defecto asegúrese de que el nuevo directorio existe y tiene permiso de " -"escritura para el usuario \"debian-transmission\"." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Lector de noticias" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5753,7 +5892,7 @@ msgstr "" "permitir noticias desde cualquier lugar, mientras mantiene un aspecto de " "aplicación de escritorio en la medida de lo posible." -#: plinth/modules/ttrss/__init__.py:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for " "connecting." msgstr "" "Cuando emplee una aplicación de móvil o de escritorio para Tiny Tiny RSS, " -"use la URL /tt-rss-app" -" para conectar." +"use la URL /tt-rss-app para conectar." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Leer y suscribirse a nuevos agregadores" @@ -5780,7 +5919,7 @@ msgstr "Leer y suscribirse a nuevos agregadores" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Bifurcación)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Actualización" @@ -5852,11 +5991,11 @@ msgstr "Proceso de actualización iniciado." msgid "Starting upgrade failed." msgstr "No se ha podido iniciar la actualización." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Usuarias/os y grupos" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -5867,7 +6006,7 @@ msgstr "" "requieren que además la cuenta de usuario conste en un grupo para " "autorizarles a acceder." -#: plinth/modules/users/__init__.py:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5879,7 +6018,7 @@ msgstr "" "sólo los usuarios del grupo admin pueden cambiar configuraciones de " "apps o del sistema." -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Comprobar la entrada LDAP \"{search_item}\"" @@ -5888,15 +6027,15 @@ msgstr "Comprobar la entrada LDAP \"{search_item}\"" msgid "Access to all services and system settings" msgstr "Acceso a todos los servicios y configuraciones del sistema" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "El nombre de usuaria/o está en uso o reservado." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Permisos" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5911,20 +6050,20 @@ msgstr "" "servicios, también podrán acceder al sistema por SSH con privilegios de " "administración (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Ha fallado la creación de usuaria/o LDAP." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Ha fallado añadir usuaria/o nuevo al grupo {group}." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Claves de SSH autorizadas" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -5934,39 +6073,39 @@ msgstr "" "de una clave. Puede introducir más de una clave, cada una en una línea. Las " "líneas en blanco y las que empiecen por # se ignorarán." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "Ha fallado renombrar al o la usuaria LDAP." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Ha fallado la eliminación del o de la usuaria del grupo." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Ha fallado añadir al o la usuaria al grupo." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "No es posible configurar las claves SSH." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "No se puede eliminar la única cuenta de administración del sistema." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Ha fallado cambiar la clave del o de la usuaria LDAP." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Ha fallado añadir usuaria/o nueva/o al grupo admin." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Falló al restringir el acceso a la consola." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Creada cuenta de usuaria/o, ya está usted en el sistema" @@ -5982,12 +6121,12 @@ msgstr "Guardar clave de acceso" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Crear usuaria/o" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Eliminar usuaria/o" @@ -6020,7 +6159,7 @@ msgid "Create Account" msgstr "Crear cuenta" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Usuarias/os" @@ -6048,62 +6187,62 @@ msgstr "" msgid "Save Changes" msgstr "Guardar cambios" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Se ha creado el o la usuaria %(username)s." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "El o la usuaria %(username)s se ha actualizado." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Editar usuario" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "El o la usuaria {user} se ha eliminado." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "Ha fallado la eliminación del o de la usuaria LDAP." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Cambiar clave de acceso" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Clave de acceso cambiada con éxito." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Genérica" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Error durante la instalación" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "instalando" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "descargando" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "cambio de medio" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "archivo de configuración: {file}" @@ -6155,12 +6294,12 @@ msgstr "" "para que podamos solucionarlo. Por favor, adjunte al informe de error el resgistro de estado." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "El servidor %(service_name)s se está ejecutando." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "El servidor %(service_name)s no se está ejecutando." @@ -6272,6 +6411,10 @@ msgstr "" "Por favor espere a que %(box_name)s termine la instalación. Podrá empezar a " "usar su %(box_name)s una vez finalice." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Instalación" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6365,19 +6508,15 @@ msgstr "" "de puertos de tu router. Deberás redireccionar los siguientes puertos para " "%(service_name)s:" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Instalación" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "¿Instalar esta aplicación?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Esta aplicación necesita actualizarse. ¿Actualizar ahora?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6385,28 +6524,28 @@ msgstr "" "Otra instalación o actualización está actualmente en ejecución. Por favor " "espere unos momentos antes de intentarlo de nuevo." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "Esta aplicación no está disponible actualmente en su distribución." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Instalar" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Realizando operaciones previas a la instalación" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Realizando operaciones posteriores a la instalación" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "Instalando %(package_names)s: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% completado" @@ -6419,18 +6558,27 @@ msgstr "Lanzar cliente web" msgid "Client Apps" msgstr "Aplicaciones de cliente" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Aplicación activada" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Aplicación desactivada" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Gujarati" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Directorio en el que se guardan las descargas. Si cambia el directorio " +#~ "por defecto asegúrese de que el nuevo directorio existe y tiene permiso " +#~ "de escritura para el usuario \"debian-transmission\"." + #~ msgid "OpenVPN server is running" #~ msgstr "El servidor OpenVPN se está ejecutando" @@ -7359,9 +7507,6 @@ msgstr "Gujarati" #~ msgid "Generated PGP key." #~ msgstr "Clave PGP generada." -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Servidor Mumble de chat de voz" - #~ msgid "Enable Mumble daemon" #~ msgstr "Activar el servicio Mumble" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index 32ca85b32..85b04cb3c 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2016-08-12 15:51+0000\n" "Last-Translator: Masoud Abkenar \n" "Language-Team: Persian any user on {box_name} " "belonging to the admin group." msgstr "" +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "نقطهٔ دسترسی" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "پیکربندی عمومی" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -691,13 +713,13 @@ msgstr "پیکربندی عمومی" msgid "Configure" msgstr "پیکربندی" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "نام دامنه" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "نام دامنه معتبر نیست" @@ -729,11 +751,11 @@ msgstr "" "نویسه‌های میانی‌اش هم تنها از حرف، رقم، یا خط تیره تشکیل شده باشد. بلندی نام " "باید ۶۳ نویسه یا کمتر باشد." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "نام میزبان معتبر نیست" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -749,11 +771,11 @@ msgstr "" "میانی‌اش هم تنها از حرف، رقم، یا خط تیره تشکیل شده باشد. بلندی هر واژه باید " "۶۳ نویسه یا کمتر باشد. بلندی کل نام دامنه باید ۲۵۳ نویسه یا کمتر باشد." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -763,53 +785,53 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "خطا در هنگام تنظیم نام میزبان: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "نام میزبان تنظیم شد" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "خطا در هنگام تنظیم نام دامنه: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "نام دامنه تنظیم شد" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "خطا در هنگام تنظیم نام میزبان: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "خطا در هنگام تنظیم نام دامنه: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -817,7 +839,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -933,18 +955,18 @@ msgstr "منطقهٔ زمانی تنظیم شد" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 #, fuzzy #| msgid "BitTorrent Web Client (Deluge)" msgid "BitTorrent Web Client" msgstr "برنامهٔ تحت وب بیت‌تورنت (Deluge)" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "دِلوگ (Deluge) یک برنامهٔ بیت‌تورنت با رابط کاربری تحت وب است." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1627,7 +1649,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1712,37 +1734,37 @@ msgstr "اتصال %(name)s را برای همیشه پاک م msgid "Delete %(name)s" msgstr "پاک‌کردن %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "Error occurred while publishing key." msgid "An error occurred while creating the repository." msgstr "هنگام انتشار کلید خطایی رخ داد." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Connection" msgid "Edit repository" msgstr "ساختن اتصال" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} پاک شد." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "نشد که {name} پاک شود: {error}" @@ -1751,8 +1773,8 @@ msgstr "نشد که {name} پاک شود: {error}" msgid "Documentation" msgstr "راهنما" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "کتاب راهنما" @@ -1914,7 +1936,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 #, fuzzy msgid "Learn more..." msgstr "بیشتر بدانید »" @@ -2045,12 +2067,12 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 #, fuzzy msgid "Anonymity Network" msgstr "رفتن به تنظیمات شبکه" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2058,7 +2080,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the ویکی %(box_name)s را ببینید." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy msgid "Manage I2P application" msgstr "فعال‌سازی برنامه" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -2094,7 +2116,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2130,13 +2152,13 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 #, fuzzy #| msgid "Manage Wikis and Blogs" msgid "Wiki and Blog" msgstr "مدیریت ویکی‌ها و وبلاگ‌ها" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2153,7 +2175,7 @@ msgstr "" "پشتیبانی می‌کند. اگر این برنامه فعال باشد، وبلاگ‌ها و ویکی‌ها از نشانی /ikiwiki قابل دسترس خواهند بود." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2162,23 +2184,23 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 #, fuzzy msgid "View and edit wiki applications" msgstr "سرویس‌ها و برنامه‌ها" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "نوع" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "نام حساب مدیر" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "رمز حساب مدیر" @@ -2219,33 +2241,33 @@ msgstr "" "این کار همهٔ نوشته‌ها، صفحه‌ها، نظرها، و تاریخچهٔ آن‌ها را حذف می‌کند. آیا به " "پاک‌کردن ویکی یا وبلاگ ادامه می‌دهید؟" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "ویکی {name} ساخته شد." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "ساختن ویکی شکست خورد: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "وبلاگ {name} ساخته شد." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "ساختن وبلاگ شکست خورد: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} پاک شد." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2255,17 +2277,17 @@ msgstr "نشد که {name} پاک شود: {error}" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "سرور وب" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2292,11 +2314,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2434,7 +2456,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2442,30 +2464,30 @@ msgid "" "moments to take effect." msgstr "گواهی دامنهٔ {domain} با موفقیت باطل شد" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "باطل‌کردن گواهی دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "گواهی دیجیتال برای دامنهٔ {domain} با موفقیت گرفته شد" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "گرفتن گواهی برای دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "گواهی دامنهٔ {domain} با موفقیت باطل شد" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, fuzzy, python-brace-format #| msgid "Failed to revoke certificate for domain {domain}: {error}" msgid "Failed to delete certificate for domain {domain}: {error}" @@ -2475,7 +2497,7 @@ msgstr "باطل‌کردن گواهی دامنهٔ {domain} شکست خورد: msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2485,7 +2507,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2523,7 +2545,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2555,11 +2577,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy msgid "Public registration disabled" msgstr "برنامه نصب شد." @@ -2569,11 +2591,11 @@ msgstr "برنامه نصب شد." msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2581,7 +2603,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2590,7 +2612,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2630,27 +2652,27 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "رمز" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy msgid "Public registrations enabled" msgstr "برنامه نصب شد." -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy msgid "Public registrations disabled" msgstr "برنامه نصب شد." -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy msgid "Private mode disabled" msgstr "برنامه نصب شد." @@ -2660,12 +2682,12 @@ msgstr "برنامه نصب شد." msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 #, fuzzy msgid "Block Sandbox" msgstr "بازی مکعب‌ها (Minetest)" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2720,7 +2742,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "نشانی" @@ -2729,61 +2751,116 @@ msgstr "نشانی" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "پیکربندی به‌روز شد" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 #, fuzzy msgid "MLDonkey" msgstr "مانکی‌اسفیر" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2964,23 +3041,23 @@ msgstr "کلید در پایگاه کلیدها منتشر شد." msgid "Error occurred while publishing key." msgstr "هنگام انتشار کلید خطایی رخ داد." -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "چت صوتی (Mumble)" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "مامبل (Mumble) یک نرم‌افزار چت صوتی متن‌باز، کم‌تأخیر، و باکیفیت است." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -2990,6 +3067,18 @@ msgstr "" "\"http://mumble.info\">نرم‌افزارهایی برای اتصال به سرور مامبل برای " "کامپیوتر رومیزی و دستگاه‌های اندروید در دسترس است." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "Please provide a password" +msgid "Set SuperUser Password" +msgstr "لطفاً یک رمز وارد کنید" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2998,6 +3087,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "سرویس نام‌ها" @@ -3044,24 +3137,24 @@ msgstr "در حال استفاده از DNSSEC روی IPv{kind}" msgid "Connection Type" msgstr "نوع اتصال" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "نام اتصال" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 #, fuzzy msgid "Physical Interface" msgstr "درگاه فیزیکی" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "دستگاه شبکه‌ای که این اتصال باید به آن مربوط شود." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "ناحیهٔ فایروال" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3069,22 +3162,22 @@ msgstr "" "ناحیهٔ فایروال مشخص می‌کند که چه سرویس‌هایی روی این درگاه‌ها در دسترس باشند. " "گزینهٔ «داخلی» را تنها برای شبکه‌های مورد اعتماد انتخاب کنید." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 #, fuzzy msgid "IPv4 Addressing Method" msgstr "روش نشانی‌دهی IPv4" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3095,40 +3188,40 @@ msgstr "" "شبکه شمرده می‌شود. در روش «اشتراکی» {box_name} به عنوان روتر عمل می‌کند، " "کاربران شبکه را تنظیم می‌کند و اتصال اینترنت خود را با آن‌ها به اشتراک می‌گذارد." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "خودکار (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "مشترک" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "ماسک شبکه" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" "اختیاری. اگر خالی بماند، یک ماسک شبکهٔ پیش‌فرض بر اساس نشانی به‌کار خواهد رفت." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "دروازه" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "اختیاری." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "دی‌ان‌اس" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3136,11 +3229,11 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "دی‌ان‌اس دوم" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3148,12 +3241,12 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 #, fuzzy msgid "IPv6 Addressing Method" msgstr "روش نشانی‌دهی IPv4" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, fuzzy, python-brace-format #| msgid "" #| "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3168,29 +3261,29 @@ msgstr "" "شبکه شمرده می‌شود. در روش «اشتراکی» {box_name} به عنوان روتر عمل می‌کند، " "کاربران شبکه را تنظیم می‌کند و اتصال اینترنت خود را با آن‌ها به اشتراک می‌گذارد." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "خودکار" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 #, fuzzy #| msgid "Automatic (DHCP)" msgid "Automatic, DHCP only" msgstr "خودکار (DHCP)" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3202,7 +3295,7 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3214,55 +3307,55 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- برگزینید --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 #, fuzzy msgid "SSID" msgstr "شناسه" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "نام قابل رویت شبکه." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "حالت" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "سازمانی" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "نقطهٔ دسترسی" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "موردی" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "باند بسامد" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (۵ گیگاهرتز)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (۲٫۴ گیگاهرتز)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "کانال" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3270,11 +3363,11 @@ msgstr "" "اختیاری. کانال بی‌سیم برای محدودکردن باند بسامدی. خالی گذاشتن یا مقدار صفر به " "معنی گزینش خودکار است." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "شناسهٔ اصلی (BSSID)" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3283,22 +3376,22 @@ msgstr "" "اختیاری. شناسهٔ یکتا برای نقطهٔ دسترسی. اتصال تنها وقتی برقرار می‌شود که شناسهٔ " "اصلی (BSSID) نقطهٔ دسترسی مطابق مقدار واردشده باشد." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "حالت تأیید هویت" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "اگر شبکهٔ بی‌سیم امن است و از کاربران رمز می‌خواهد، WPA را برگزینید." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 #, fuzzy msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "باز" @@ -3505,7 +3598,7 @@ msgstr "آی‌پی ن۴" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "روش" @@ -3521,6 +3614,7 @@ msgstr "دی‌ان‌اس" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "پیش‌فرض" @@ -3533,7 +3627,7 @@ msgid "This connection is not active." msgstr "این اتصال فعال نیست." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "امنیت" @@ -3596,13 +3690,13 @@ msgstr "Spacing" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "اترنت" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3649,11 +3743,11 @@ msgstr "ساختن..." msgid "OpenVPN" msgstr "باز" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3664,13 +3758,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3800,7 +3894,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -4046,18 +4140,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4067,7 +4161,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4076,11 +4170,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4091,7 +4185,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -4307,7 +4401,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4321,13 +4415,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4335,7 +4429,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4389,25 +4483,25 @@ msgstr "مشترک" msgid "Action" msgstr "کنش‌ها" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} پاک شد." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "خطا هنگام نصب برنامه: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "مشترک" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4417,25 +4511,25 @@ msgstr "خطا هنگام نصب برنامه: {error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "سرور وب" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4469,27 +4563,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4504,7 +4598,7 @@ msgid "Show security report" msgstr "امنیت" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4537,13 +4631,13 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error setting restricted access: {exception}" msgstr "خطا در هنگام تنظیم منطقهٔ زمانی: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -4573,18 +4667,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4593,7 +4687,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4604,25 +4698,25 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 #, fuzzy #| msgid "Service" msgid "Server" msgstr "سرویس" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4685,58 +4779,58 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 #, fuzzy #| msgid "Shared" msgid "Shared Over" msgstr "مشترک" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 #, fuzzy #| msgid "Shared" msgid "Share added." msgstr "مشترک" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 #, fuzzy #| msgid "Shared" msgid "Add Share" msgstr "مشترک" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 #, fuzzy #| msgid "Shared" msgid "Share edited." msgstr "مشترک" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 #, fuzzy #| msgid "Shared" msgid "Edit Share" msgstr "مشترک" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 #, fuzzy #| msgid "{name} deleted." msgid "Share deleted." @@ -4800,51 +4894,51 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 #, fuzzy #| msgid "Delete %(name)s" msgid "Hourly Snapshots Limit" msgstr "پاک‌کردن %(name)s" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 #, fuzzy #| msgid "Delete %(name)s" msgid "Daily Snapshots Limit" msgstr "پاک‌کردن %(name)s" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 #, fuzzy #| msgid "Delete %(name)s" msgid "Weekly Snapshots Limit" msgstr "پاک‌کردن %(name)s" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 #, fuzzy #| msgid "Delete %(name)s" msgid "Yearly Snapshots Limit" msgstr "پاک‌کردن %(name)s" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4924,13 +5018,13 @@ msgstr "پاک‌کردن %(name)s" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "Configuration updated" msgid "Storage snapshots configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -5039,89 +5133,129 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, fuzzy, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size} بایت" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, 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:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 #, 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:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "نام میزبان معتبر نیست" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "انتشار کلید" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" @@ -5195,11 +5329,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5207,7 +5341,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5218,7 +5352,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -5226,11 +5360,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5238,7 +5372,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5298,76 +5432,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5375,41 +5509,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5460,53 +5594,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5514,7 +5641,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5585,18 +5712,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5604,7 +5731,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5613,15 +5740,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5630,59 +5757,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "ساختن کاربر LDAP شکست خورد." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "حساب کاربری ساخته شد، شما الان وارد سیستم هستید" @@ -5698,12 +5825,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5738,7 +5865,7 @@ msgid "Create Account" msgstr "ساختن اتصال" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5764,62 +5891,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5862,12 +5989,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5981,6 +6108,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6062,46 +6193,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -6116,15 +6243,15 @@ msgstr "" msgid "Client Apps" msgstr "برنامهٔ تحت وب بیت‌تورنت (Deluge)" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 3a1cd9668..9d725dc2b 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers /IKIWIKI." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "GENERAL CONFIGURATION" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -722,13 +742,13 @@ msgstr "GENERAL CONFIGURATION" msgid "Configure" msgstr "CONFIGURE" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "DOMAIN NAME" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "INVALID DOMAIN NAME" @@ -759,11 +779,11 @@ msgstr "" "AND HAVE AS INTERIOR CHARACTERS ONLY ALPHABETS, DIGITS AND HYPHENS. TOTAL " "LENGTH MUST BE 63 CHARACTERS OR LESS." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "INVALID HOSTNAME" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -780,13 +800,13 @@ msgstr "" "63 CHARACTERS OR LESS. TOTAL LENGTH OF DOMAIN NAME MUST BE 253 CHARACTERS " "OR LESS." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 #, fuzzy #| msgid "Web Server (HTTP)" msgid "Webserver Home Page" msgstr "WEB SERVER (HTTP)" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -796,53 +816,53 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "ERROR SETTING HOSTNAME: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "HOSTNAME SET" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "ERROR SETTING DOMAIN NAME: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "DOMAIN NAME SET" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "ERROR SETTING HOSTNAME: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "ERROR SETTING DOMAIN NAME: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -850,7 +870,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 #, fuzzy #| msgid "Enable Shaarli" msgid "File Sharing" @@ -970,18 +990,18 @@ msgstr "TIME ZONE SET" msgid "Deluge" msgstr "ENABLE DELUGE" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 #, fuzzy #| msgid "BitTorrent Web Client (Deluge)" msgid "BitTorrent Web Client" msgstr "BITTORRENT WEB CLIENT (DELUGE)" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "DELUGE IS A BITTORRENT CLIENT THAT FEATURES A WEB UI." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /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:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -1017,7 +1037,7 @@ msgstr "" "THE SYSTEM DIAGNOSTIC TEST WILL RUN A NUMBER OF CHECKS ON YOUR SYSTEM TO " "CONFIRM THAT APPLICATIONS AND SERVICES ARE WORKING AS EXPECTED." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "DIAGNOSTIC TEST" @@ -1105,18 +1125,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "UPDATE SETUP" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "SETTING UNCHANGED" @@ -1184,7 +1204,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "DOMAIN NAME" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1194,7 +1214,7 @@ msgstr "" "USED WITHIN THE URL. FOR DETAILS SEE THE UPDATE URL TEMPLATES OF THE EXAMPLE " "PROVIDERS." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 #, fuzzy #| msgid "" #| "Please choose an update protocol according to your provider. If your " @@ -1209,7 +1229,7 @@ msgstr "" "PROVIDER DOES NOT SUPPORT THE GNUDIP PROTOCOL OR YOUR PROVIDER IS NOT LISTED " "YOU MAY USE THE UPDATE URL OF YOUR PROVIDER." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1217,17 +1237,17 @@ msgstr "" "PLEASE DO NOT ENTER A URL HERE (LIKE \"HTTPS://EXAMPLE.COM/\") BUT ONLY THE " "HOSTNAME OF THE GNUDIP SERVER (LIKE \"EXAMPLE.COM\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, fuzzy, python-brace-format #| msgid "The public domain name you want use to reach your {box_name}." msgid "The public domain name you want to use to reach your {box_name}." msgstr "THE PUBLIC DOMAIN NAME YOU WANT USE TO REACH YOUR {box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "USE THIS OPTION IF YOUR PROVIDER USES SELF SIGNED CERTIFICATES." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1235,7 +1255,7 @@ msgstr "" "IF THIS OPTION IS SELECTED, YOUR USERNAME AND PASSWORD WILL BE USED FOR HTTP " "BASIC AUTHENTICATION." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 #, fuzzy #| msgid "" #| "Leave this field empty if you want to keep your previous configured " @@ -1244,7 +1264,7 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "" "LEAVE THIS FIELD EMPTY IF YOU WANT TO KEEP YOUR PREVIOUS CONFIGURED PASSWORD." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, fuzzy, python-brace-format #| msgid "" #| "Optional Value. If your {box_name} is not connected directly to the " @@ -1262,78 +1282,78 @@ msgstr "" "INTERNET IP. THE URL SHOULD SIMPLY RETURN THE IP WHERE THE CLIENT COMES FROM " "(EXAMPLE: HTTP://MYIP.DATASYSTEMS24.DE)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "ENABLE DYNAMIC DNS" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 #, fuzzy #| msgid "Service type" msgid "Service Type" msgstr "SERVICE TYPE" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 #, fuzzy #| msgid "GnudIP Server Address" msgid "GnuDIP Server Address" msgstr "GNUDIP SERVER ADDRESS" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "INVALID SERVER NAME" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "UPDATE URL" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "ACCEPT ALL SSL CERTIFICATES" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "USE HTTP BASIC AUTHENTICATION" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "USERNAME" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "PASSWORD" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "SHOW PASSWORD" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 #, fuzzy #| msgid "Please provide update URL or a GnuDIP Server" msgid "Please provide an update URL or a GnuDIP server address" msgstr "PLEASE PROVIDE UPDATE URL OR A GNUDIP SERVER" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 #, fuzzy #| msgid "Please provide GnuDIP username" msgid "Please provide a GnuDIP username" msgstr "PLEASE PROVIDE GNUDIP USERNAME" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 #, fuzzy #| msgid "Please provide GnuDIP domain" msgid "Please provide a GnuDIP domain name" msgstr "PLEASE PROVIDE GNUDIP DOMAIN" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "PLEASE PROVIDE A PASSWORD" @@ -1427,7 +1447,7 @@ msgstr "LAST UPDATE" msgid "About" msgstr "ABOUT" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1435,15 +1455,15 @@ msgstr "ABOUT" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "STATUS" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "CONFIGURE DYNAMIC DNS" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 #, fuzzy #| msgid "Dynamic DNS" msgid "Dynamic DNS Status" @@ -1453,14 +1473,14 @@ msgstr "DYNAMIC DNS" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 #, fuzzy #| msgid "Web Server" msgid "Chat Server" msgstr "WEB SERVER" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1468,7 +1488,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the web client " @@ -1552,18 +1572,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:50 #: plinth/modules/i2p/templates/i2p.html:26 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:31 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:30 #: plinth/modules/snapshot/templates/snapshot.html:27 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:43 -#: plinth/templates/app.html:98 +#: plinth/templates/app.html:70 msgid "Configuration" msgstr "CONFIGURATION" -#: plinth/modules/ejabberd/views.py:78 +#: plinth/modules/ejabberd/views.py:79 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:82 +#: plinth/modules/ejabberd/views.py:83 msgid "Message Archive Management disabled" msgstr "" @@ -1616,7 +1636,7 @@ msgstr "ENABLED" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:69 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 msgid "Disabled" msgstr "DISABLED" @@ -1692,11 +1712,11 @@ msgstr "SETUP COMPLETE" msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:45 +#: plinth/modules/gitweb/__init__.py:47 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:48 +#: plinth/modules/gitweb/__init__.py:50 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1707,13 +1727,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:55 +#: plinth/modules/gitweb/__init__.py:57 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1741,7 +1761,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "packages not found" msgid "Repository's owner name" @@ -1830,41 +1850,41 @@ msgstr "DELETE USER PERMANENTLY?" msgid "Delete %(name)s" msgstr "DELETE %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "packages not found" msgid "Repository created." msgstr "PACKAGES NOT FOUND" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "AN ERROR OCCURRED DURING CONFIGURATION." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "packages not found" msgid "Repository edited." msgstr "PACKAGES NOT FOUND" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "CREATE USER" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "AN ERROR OCCURRED DURING CONFIGURATION." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} DELETED." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "COULD NOT DELETE {name}: {error}" @@ -1873,8 +1893,8 @@ msgstr "COULD NOT DELETE {name}: {error}" msgid "Documentation" msgstr "DOCUMENTATION" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "MANUAL" @@ -2035,7 +2055,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 #, fuzzy #| msgid "Learn more »" msgid "Learn more..." @@ -2174,13 +2194,13 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "TOR ANONYMITY NETWORK" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2188,7 +2208,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s WIKI." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Applications" msgid "Manage I2P application" msgstr "APPLICATIONS" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -2227,7 +2247,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2265,18 +2285,18 @@ msgstr "" msgid "ikiwiki" msgstr "WIKI" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "WIKI AND BLOG" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2285,24 +2305,24 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" msgstr "SERVICES AND APPLICATIONS" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "TYPE" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "ADMIN ACCOUNT NAME" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "ADMIN ACCOUNT NAMEADMIN ACCOUNT PASSWORD" @@ -2343,33 +2363,33 @@ msgstr "" "THIS ACTION WILL REMOVE ALL THE POSTS, PAGES AND COMMENTS INCLUDING REVISION " "HISTORY. DELETE THIS WIKI OR BLOG PERMANENTLY?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "CREATED WIKI {name}." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "COULD NOT CREATE WIKI: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "CREATED BLOG {name}." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "COULD NOT CREATE BLOG: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} DELETED." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2379,17 +2399,17 @@ msgstr "COULD NOT DELETE {name}: {error}" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "WEB SERVER" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2416,13 +2436,13 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 #, fuzzy #| msgid "IRC Client (Quassel)" msgid "Chat Client" msgstr "IRC CLIENT (QUASSEL)" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2561,7 +2581,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2569,30 +2589,30 @@ msgid "" "moments to take effect." msgstr "CERTIFICATE SUCCESSFULLY REVOKED FOR DOMAIN {domain}" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "FAILED TO REVOKE CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "CERTIFICATE SUCCESSFULLY OBTAINED FOR DOMAIN {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "FAILED TO OBTAIN CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "CERTIFICATE SUCCESSFULLY REVOKED FOR DOMAIN {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, fuzzy, python-brace-format #| msgid "Failed to revoke certificate for domain {domain}: {error}" msgid "Failed to delete certificate for domain {domain}: {error}" @@ -2604,7 +2624,7 @@ msgstr "FAILED TO REVOKE CERTIFICATE FOR DOMAIN {domain}: {error}" msgid "Matrix Synapse" msgstr "CHAT SERVER (XMPP)" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2614,7 +2634,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2653,7 +2673,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2692,13 +2712,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 #, fuzzy #| msgid "Applications" msgid "Public registration enabled" msgstr "APPLICATIONS" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy #| msgid "Applications" msgid "Public registration disabled" @@ -2709,11 +2729,11 @@ msgstr "APPLICATIONS" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2721,7 +2741,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2730,7 +2750,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2772,31 +2792,31 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "PASSWORD" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Applications" msgid "Public registrations enabled" msgstr "APPLICATIONS" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Applications" msgid "Public registrations disabled" msgstr "APPLICATIONS" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 #, fuzzy #| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "PAGEKITE ENABLED" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy #| msgid "PageKite disabled" msgid "Private mode disabled" @@ -2807,13 +2827,13 @@ msgstr "PAGEKITE DISABLED" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" msgstr "BLOCKED" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2865,7 +2885,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "ADDRESS" @@ -2874,30 +2894,87 @@ msgstr "ADDRESS" msgid "Port" msgstr "PORT" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "CONFIGURATION UPDATED" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "MUMBLE VOICE CHAT SERVER" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 #, fuzzy @@ -2905,33 +2982,33 @@ msgstr "CONFIGURATION UPDATED" msgid "MLDonkey" msgstr "MONKEYSPHERE" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" msgstr "ENABLE SHAARLI" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -3157,17 +3234,17 @@ msgstr "PUBLISHED KEY TO KEYSERVER." msgid "Error occurred while publishing key." msgstr "ERROR OCCURRED WHILE PUBLISHING KEY." -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "VOICE CHAT (MUMBLE)" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3175,7 +3252,7 @@ msgstr "" "MUMBLE IS AN OPEN SOURCE, LOW-LATENCY, ENCRYPTED, HIGH QUALITY VOICE CHAT " "SOFTWARE." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3185,6 +3262,18 @@ msgstr "" "href=\"http://mumble.info\">CLIENTS TO CONNECT TO MUMBLE FROM YOUR " "DESKTOP AND ANDROID DEVICES ARE AVAILABLE." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "Save Password" +msgid "Set SuperUser Password" +msgstr "SAVE PASSWORD" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -3193,6 +3282,12 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "PASSWORD CHANGED SUCCESSFULLY." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "NAME SERVICES" @@ -3239,23 +3334,23 @@ msgstr "USING DNSSEC ON IPV{kind}" msgid "Connection Type" msgstr "CONNECTION TYPE" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "CONNECTION NAME" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "PHYSICAL INTERFACE" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "THE NETWORK DEVICE THAT THIS CONNECTION SHOULD BE BOUND TO." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "FIREWALL ZONE" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3263,21 +3358,21 @@ msgstr "" "THE FIREWALL ZONE WILL CONTROL WHICH SERVICES ARE AVAILABLE OVER THIS " "INTERFACES. SELECT INTERNAL ONLY FOR TRUSTED NETWORKS." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "EXTERNAL" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "INTERNAL" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPV4 ADDRESSING METHOD" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3285,19 +3380,19 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "NETMASK" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3305,21 +3400,21 @@ msgstr "" "OPTIONAL VALUE. IF LEFT BLANK, A DEFAULT NETMASK BASED ON THE ADDRESS WILL " "BE USED." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "GATEWAY" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "OPTIONAL VALUE." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS SERVER" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3327,11 +3422,11 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "SECOND DNS SERVER" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3339,44 +3434,44 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 #, fuzzy #| msgid "IPv4 Addressing Method" msgid "IPv6 Addressing Method" msgstr "IPV4 ADDRESSING METHOD" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic" msgstr "AUTOMATIC UPGRADES" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic, DHCP only" msgstr "AUTOMATIC UPGRADES" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3388,7 +3483,7 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3400,77 +3495,77 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- SELECT --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "THE VISIBLE NAME OF THE NETWORK." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "MODE" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "CHANNEL" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 #, fuzzy #| msgid "SSID" msgid "BSSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "AUTHENTICATION MODE" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3478,11 +3573,11 @@ msgstr "" "SELECT WPA IF THE WIRELESS NETWORK IS SECURED AND REQUIRES CLIENTS TO HAVE " "THE PASSWORD TO CONNECT." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 #, fuzzy #| msgid "OpenVPN" msgid "Open" @@ -3695,7 +3790,7 @@ msgstr "IPV4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "METHOD" @@ -3711,6 +3806,7 @@ msgstr "DNS SERVER" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "DEFAULT" @@ -3723,7 +3819,7 @@ msgid "This connection is not active." msgstr "THIS CONNECTION IS NOT ACTIVE." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "SECURITY" @@ -3786,13 +3882,13 @@ msgstr "SPACING" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "ETHERNET" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "WI-FI" @@ -3839,13 +3935,13 @@ msgstr "CREATE..." msgid "OpenVPN" msgstr "OPENVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "VIRTUAL PRIVATE NETWORK (OPENVPN)" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, fuzzy, python-brace-format #| msgid "" #| "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3869,13 +3965,13 @@ msgstr "" "YOU CAN ALSO ACCESS THE REST OF THE INTERNET VIA %(box_name)s FOR ADDED " "SECURITY AND ANONYMITY." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "ENABLE OPENVPN SERVER" @@ -4061,7 +4157,7 @@ msgstr "" "SELECT YOUR PAGEKITE SERVER. SET \"PAGEKITE.NET\" TO USE THE DEFAULT " "PAGEKITE.NET SERVER." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "SERVER PORT" @@ -4325,13 +4421,13 @@ msgstr "SHUT DOWN NOW" msgid "Privoxy" msgstr "ENABLE PRIVOXY" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "PRIVOXY WEB PROXY" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 #, fuzzy #| msgid "" #| "Privoxy is a non-caching web proxy with advanced filtering capabilities " @@ -4346,7 +4442,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:52 +#: plinth/modules/privoxy/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "You can use Privoxy by modifying your browser proxy settings to your " @@ -4367,7 +4463,7 @@ msgstr "" "config.privoxy.org\">HTTP://CONFIG.PRIVOXY.ORG/ OR HTTP://P.P.\"" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "ACCESS {url} WITH PROXY {proxy} ON TCP{kind}" @@ -4376,13 +4472,13 @@ msgstr "ACCESS {url} WITH PROXY {proxy} ON TCP{kind}" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" msgstr "QUASSEL IRC CLIENT" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, fuzzy, python-brace-format #| msgid "" #| "Quassel is an IRC application that is split into two parts, a \"core\" " @@ -4406,7 +4502,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:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. " @@ -4682,7 +4778,7 @@ msgstr "" "IMAP.EXAMPLE.COM. FOR IMAP OVER SSL (RECOMMENDED), FILL THE " "SERVER FIELD LIKE IMAPS://IMAP.EXAMPLE.COM." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 #, fuzzy #| msgid "" #| "For Gmail, username will be your Gmail address, password will be your " @@ -4710,13 +4806,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4724,7 +4820,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4777,25 +4873,25 @@ msgstr "KITE NAME" msgid "Action" msgstr "ACTIONS" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} DELETED." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing packages: {string} {details}" msgid "Error enabling share: {error_message}" msgstr "ERROR INSTALLING PACKAGES: {string} {details}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share disabled." msgstr "{name} DELETED." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing packages: {string} {details}" msgid "Error disabling share: {error_message}" @@ -4805,25 +4901,25 @@ msgstr "ERROR INSTALLING PACKAGES: {string} {details}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "WEB SERVER" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4859,27 +4955,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "CONFIGURATION UPDATED." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4894,7 +4990,7 @@ msgid "Show security report" msgstr "SECURITY" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4927,13 +5023,13 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error setting restricted access: {exception}" msgstr "ERROR SETTING TIME ZONE: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -4973,18 +5069,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4993,7 +5089,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -5004,27 +5100,27 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 #, fuzzy #| msgid "Service" msgid "Server" msgstr "SERVICE" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 #, fuzzy #| msgid "Server port" msgid "Server port number" msgstr "SERVER PORT" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -5089,56 +5185,56 @@ msgstr "THIS SERVICE ALREADY EXISTS" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 #, fuzzy #| msgid "Add Service" msgid "Add share" msgstr "ADD SERVICE" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 #, fuzzy #| msgid "Groups" msgid "With Groups" msgstr "GROUPS" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 #, fuzzy #| msgid "Add Service" msgid "Add Share" msgstr "ADD SERVICE" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 #, fuzzy #| msgid "Edit User" msgid "Edit Share" msgstr "EDIT USER" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 #, fuzzy #| msgid "{name} deleted." msgid "Share deleted." @@ -5202,51 +5298,51 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 #, fuzzy #| msgid "Create User" msgid "Hourly Snapshots Limit" msgstr "CREATE USER" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 #, fuzzy #| msgid "Delete %(name)s" msgid "Daily Snapshots Limit" msgstr "DELETE %(name)s" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 #, fuzzy #| msgid "Delete %(name)s" msgid "Weekly Snapshots Limit" msgstr "DELETE %(name)s" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 #, fuzzy #| msgid "Delete %(name)s" msgid "Yearly Snapshots Limit" msgstr "DELETE %(name)s" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5332,13 +5428,13 @@ msgstr "CREATE USER" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "Configuration updated" msgid "Storage snapshots configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "ACTION ERROR: {0} [{1}] [{2}]" @@ -5449,89 +5545,133 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 #, 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:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 #, 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:264 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "REPRO SERVICE IS NOT RUNNING" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "INVALID HOSTNAME" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "DOWNLOAD DIRECTORY" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "DOWNLOAD DIRECTORY" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "PUBLISH KEY" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following is the current status:" @@ -5602,11 +5742,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5614,7 +5754,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5625,7 +5765,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 #, fuzzy #| msgid "Installation" msgid "Administer Syncthing application" @@ -5635,11 +5775,11 @@ msgstr "INSTALLATION" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5647,7 +5787,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5719,80 +5859,80 @@ msgstr "" "THE " "TOR BROWSER." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "TOR HIDDEN SERVICE" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "TOR BRIDGE RELAY" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "TOR RELAY PORT AVAILABLE" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "OBFS3 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "OBFS4 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "CONFIRM TOR USAGE AT {url} ON TCP{kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "ENABLE TOR" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 #, fuzzy #| msgid "Enable Tor" msgid "Enable Tor relay" msgstr "ENABLE TOR" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5800,43 +5940,43 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 #, fuzzy #| msgid "Tor Bridge Relay" msgid "Enable Tor bridge relay" msgstr "TOR BRIDGE RELAY" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "ENABLE TOR HIDDEN SERVICE" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as ownCloud or chat) without revealing its location." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" "A HIDDEN SERVICE WILL ALLOW {box_name} TO PROVIDE SELECTED SERVICES (SUCH AS " "OWNCLOUD OR CHAT) WITHOUT REVEALING ITS LOCATION." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "DOWNLOAD SOFTWARE PACKAGES OVER TOR" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5846,7 +5986,7 @@ msgstr "" "INSTALLATIONS AND UPGRADES. THIS ADDS A DEGREE OF PRIVACY AND SECURITY " "DURING SOFTWARE DOWNLOADS." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5910,7 +6050,7 @@ msgstr "A TOR SOCKS PORT IS AVAILABLE ON YOUR %(box_name)s ON TCP PORT 9050." msgid "Transmission" msgstr "TRANSMISSION BITTORRENT" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5918,36 +6058,26 @@ 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/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "DOWNLOAD DIRECTORY" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"DIRECTORY WHERE DOWNLOADS ARE SAVED. IF YOU CHANGE THE DEFAULT DIRECTORY, " -"ENSURE THAT THE NEW DIRECTORY EXISTS AND IS WRITABLE BY \"DEBIAN-TRANSMISSION" -"\" USER." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, the blogs and wikis will be available from /IKIWIKI." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5974,7 +6104,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 #, fuzzy #| msgid "Update URL" msgid "Update" @@ -6060,18 +6190,18 @@ msgstr "UPGRADE PROCESS STARTED." msgid "Starting upgrade failed." msgstr "STARTING UPGRADE FAILED." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "USERS AND GROUPS" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6079,7 +6209,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "CHECK LDAP ENTRY \"{search_item}\"" @@ -6088,17 +6218,17 @@ msgstr "CHECK LDAP ENTRY \"{search_item}\"" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Permissions" msgstr "TRANSMISSION BITTORRENT" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6112,20 +6242,20 @@ msgstr "" "ABLE TO LOG IN TO ALL SERVICES. THEY CAN ALSO LOG IN TO THE SYSTEM THROUGH " "SSH AND HAVE ADMINISTRATIVE PRIVILEGES (SUDO)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "CREATING LDAP USER FAILED." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "FAILED TO ADD NEW USER TO {group} GROUP." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6135,39 +6265,39 @@ msgstr "" "SYSTEM WITHOUT USING A PASSWORD. YOU MAY ENTER MULTIPLE KEYS, ONE ON EACH " "LINE. BLANK LINES AND LINES STARTING WITH # WILL BE IGNORED." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "RENAMING LDAP USER FAILED." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "FAILED TO REMOVE USER FROM GROUP." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "FAILED TO ADD USER TO GROUP." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "CHANGING LDAP USER PASSWORD FAILED." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "FAILED TO ADD NEW USER TO ADMIN GROUP." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "USER ACCOUNT CREATED, YOU ARE NOW LOGGED IN" @@ -6183,12 +6313,12 @@ msgstr "SAVE PASSWORD" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "CREATE USER" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "DELETE USER" @@ -6223,7 +6353,7 @@ msgid "Create Account" msgstr "PAGEKITE ACCOUNT" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "USERS" @@ -6251,66 +6381,66 @@ msgstr "" msgid "Save Changes" msgstr "SAVE CHANGES" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "USER %(username)s CREATED." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "USER %(username)s UPDATED." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "EDIT USER" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "USER {user} DELETED." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "DELETING LDAP USER FAILED." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "CHANGE PASSWORD" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "PASSWORD CHANGED SUCCESSFULLY." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPOE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 #, fuzzy #| msgid "Installation" msgid "installing" msgstr "INSTALLATION" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "SETTING UNCHANGED" -#: plinth/package.py:167 +#: plinth/package.py:165 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -6369,13 +6499,13 @@ msgstr "" "REPORT THE ERROR ON THE BUG TRACKER SO WE CAN FIX IT." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, fuzzy, python-format #| msgid "Service discovery server is running" msgid "Service %(service_name)s is running." msgstr "SERVICE DISCOVERY SERVER IS RUNNING" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, fuzzy, python-format #| msgid "Service discovery server is not running" msgid "Service %(service_name)s is not running." @@ -6499,6 +6629,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "INSTALLATION" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6585,48 +6719,44 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "INSTALLATION" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 #, fuzzy #| msgid "Installation" msgid "Install this application?" msgstr "INSTALLATION" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "INSTALL" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "INSTALLING %(package_names)s: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% COMPLETE" @@ -6641,22 +6771,31 @@ msgstr "LAUNCH WEB CLIENT" msgid "Client Apps" msgstr "QUASSEL IRC CLIENT" -#: plinth/views.py:180 +#: plinth/views.py:181 #, fuzzy #| msgid "Applications" msgid "Application enabled" msgstr "APPLICATIONS" -#: plinth/views.py:183 +#: plinth/views.py:184 #, fuzzy #| msgid "Applications" msgid "Application disabled" msgstr "APPLICATIONS" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "DIRECTORY WHERE DOWNLOADS ARE SAVED. IF YOU CHANGE THE DEFAULT " +#~ "DIRECTORY, ENSURE THAT THE NEW DIRECTORY EXISTS AND IS WRITABLE BY " +#~ "\"DEBIAN-TRANSMISSION\" USER." + #~ msgid "OpenVPN server is running" #~ msgstr "OPENVPN SERVER IS RUNNING" @@ -7324,9 +7463,6 @@ msgstr "" #~ msgid "Generated PGP key." #~ msgstr "GENERATED PGP KEY." -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "MUMBLE VOICE CHAT SERVER" - #~ msgid "Enable Mumble daemon" #~ msgstr "ENABLE MUMBLE DAEMON" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 61f15c4f1..4c8ba4e1f 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-12-12 20:05+0000\n" "Last-Translator: Thomas Vincent \n" "Language-Team: French any user on {box_name} " @@ -675,11 +675,33 @@ msgstr "" "Il peut être consulté par tout utilisateur " "faisant partie du groupe admin sur {box_name}." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Point d'accès" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Configuration générale" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -687,13 +709,13 @@ msgstr "Configuration générale" msgid "Configure" msgstr "Configurer" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Nom de domaine" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Nom de domaine invalide" @@ -723,11 +745,11 @@ msgstr "" "la fin seulement des lettres de l'alphabet, des chiffres ou des traits " "d’union « - ». Sa longueur maximum est de 63 signes." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Nom de machine invalide" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -746,11 +768,11 @@ msgstr "" "63 signes. La longueur totale du nom de domaine ne doit pas excéder 253 " "signes." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Page d’accueil du serveur Web" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -767,55 +789,55 @@ msgstr "" "explicitement taper /plinth ou /freedombox pour atteindre le service " "(Plinth) the {box_name}." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Montrer les applications et fonctionnalités avancées" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" "Montrer les applications et fonctionnalités nécessitant plus de " "connaissances techniques." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Erreur lors de l'établissement du nom de machine : {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Nom de machine établi" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Erreur lors de l'établissement du nom de domaine : {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Nom de domaine établi" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" "Erreur lors de l'établissement de la page d’accueil du serveur Web : " "{exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Page d’accueil du serveur Web établie" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Erreur lors du changement de mode avancé : {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "Affichage des applications et fonctionnalités avancées" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Cacher les applications et les fonctionnalités avancées" @@ -823,7 +845,7 @@ msgstr "Cacher les applications et les fonctionnalités avancées" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Partage de fichiers" @@ -937,16 +959,16 @@ msgstr "Fuseau horaire établi" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "Client web pour BitTorrent" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 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:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -954,8 +976,8 @@ msgstr "" "Le mot de passe par défaut est 'deluge'. Vous devrez toutefois vous " "connecter et le changer tout de suite après l'activation du service." -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Télécharger des fichiers avec des applications BitTorrent" @@ -976,7 +998,7 @@ msgstr "" "sur votre système pour confirmer que les applications et les services " "fonctionnent comme prévu." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Test de diagnostic" @@ -1074,18 +1096,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Actualiser la configuration" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Paramètre inchangé" @@ -1135,7 +1157,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Nom de domaine dynamique" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1145,7 +1167,7 @@ msgstr "" "être utilisées dans l'URL. Pour plus de détails, voir les modèles d'URL mis " "à jour pour un exemple de fournisseurs." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1156,7 +1178,7 @@ msgstr "" "votre fournisseur n'est pas listé, vous pouvez utiliser la mise à jour URL " "de votre fournisseur." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1164,19 +1186,19 @@ msgstr "" "Veuillez ne pas entrer une URL (comme \"https://example.com/\"), mais " "seulement le nom de machine du serveur GnuDIP (comme \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "Le nom de domaine public que vous désirez utiliser pour atteindre votre " "{box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Utilisez ce choix si votre fournisseur utilise des certificats auto-signés." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1184,13 +1206,13 @@ msgstr "" "Si ce choix est sélectionné, votre nom d'utilisateur et votre mot de passe " "seront utilisés pour une authentification HTTP de base." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" "Laissez ce champ vide si vous ne désirez pas changer le mot de passe entré " "précédemment." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1204,68 +1226,68 @@ msgstr "" "directement à l'Internet (si par exemple votre routeur est sur le mode « NAT " "»)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "Le nom d’utilisateur choisi lors de la création du compte dynamique." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Activer le DNS Dynamique" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Type de service" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "Adresse Serveur GnuDIP" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Nom de serveur invalide" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "Actualiser l'URL" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Accepte tous les certificats SSL" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Utiliser une authentification HTTP basique" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Nom Utilisateur" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Mot de passe" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Montrer le mot de passe" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "URL pour rechercher l'IP publique" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Fournir une mise à jour URL ou une adresse de serveur GnuDIP" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Fournir le nom d'utilisateur GnuDIP (« Username/Hostname »)" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Fournir le nom de domaine GnuDIP (« Domain Name »)" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Fournir un mot de passe" @@ -1345,7 +1367,7 @@ msgstr "Dernière mise à jour" msgid "About" msgstr "À propos" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1353,15 +1375,15 @@ msgstr "À propos" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "État" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Configurer le DNS Dynamique" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Etat du DNS Dynamique" @@ -1369,12 +1391,12 @@ msgstr "Etat du DNS Dynamique" msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Serveur de discussion" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1382,7 +1404,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." @@ -1642,7 +1664,7 @@ msgstr "" "Pour en apprendre plus sur l'utilisation de Git, consultez ce tutoriel Git." -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "Modification des dépôts Git autorisées" @@ -1667,7 +1689,7 @@ msgstr "Description du dépôt" msgid "Optional, for displaying on Gitweb." msgstr "Optionnel, pour l'affichage dans Gitweb." -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Propriétaire du dépôt" @@ -1737,33 +1759,33 @@ msgstr "Supprimer définitivement ce dépôt ?" msgid "Delete %(name)s" msgstr "Supprimer %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Dépôt créé." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Une erreur est survenue pendant la création du dépôt." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Dépôt modifié." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Modifier un dépôt" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Une erreur est survenue pendant la configuration." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} supprimé." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "La suppression de {name} n'a pas abouti : {error}" @@ -1772,8 +1794,8 @@ msgstr "La suppression de {name} n'a pas abouti : {error}" msgid "Documentation" msgstr "Documentation" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manuel" @@ -1951,7 +1973,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "En savoir plus..." @@ -2104,11 +2126,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Réseau d'anonymat" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2120,7 +2142,7 @@ msgstr "" "fournit un 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:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." @@ -2128,7 +2150,7 @@ msgstr "" "Vous trouverez plus d'informations à propos d'I2P sur la page principale de leur projet." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2136,11 +2158,11 @@ msgstr "" "La configuration aura lieu lors de la première visite à l'interface web " "fournie." -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "Gérer l'application I2P" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "Serveur mandataire I2P" @@ -2153,7 +2175,7 @@ msgstr "Lancer" msgid "Proxies" msgstr "Mandataires" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Torrents anonymes" @@ -2198,11 +2220,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki et Blogue" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2212,7 +2234,7 @@ msgstr "" "plusieurs langages de balisage légers, y compris Markdown, et les " "fonctionnalités de blog habituels tels que les commentaires et les flux RSS." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2226,22 +2248,22 @@ msgstr "" "modifier ces autorisations ou ajouter de nouveaux utilisateurs dans la configuration des utilisateurs." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Afficher et modifier des applications wiki" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Nom Compte Admin" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Mot de Passe Compte Admin" @@ -2283,32 +2305,32 @@ msgstr "" "commentaires, ainsi que l'historique des révisions. Voulez-vous supprimer ce " "wiki ou blogue de façon permanente ?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} créé." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Le wiki n'a pu être créé : {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Blogue {name} créé." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Le blogue n'a pu être créé : {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "{title} supprimé." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "La suppression de {title} n'a pas abouti : {error}" @@ -2317,15 +2339,15 @@ msgstr "La suppression de {title} n'a pas abouti : {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Serveur Gobby" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2357,11 +2379,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Client de discussion" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2481,7 +2503,7 @@ msgstr "" "Aucun domaine n'a été configuré. Configurez des " "domaines pour pouvoir leur obtenir des certificats." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2490,30 +2512,30 @@ msgstr "" "Certificat révoqué avec succès pour le domaine {domain}. Cela peut prendre " "un moment pour prendre effet." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" "Échec de la révocation du certificat pour le domaine {domain} : {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certificat obtenu avec succès pour le domaine {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Échec de l'obtention du certificat pour le domaine {domain} : {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certificat supprimé avec succès pour le domaine {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2523,7 +2545,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2541,7 +2563,7 @@ msgstr "" "peuvent converser avec des utilisateurs sur tous les autres serveurs Matrix " "grâce la fédération." -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @nomUtilisateur:nomDeDomaine." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2594,7 +2616,7 @@ msgstr "" " n’est actuellement pas pris en charge.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2641,11 +2663,11 @@ msgstr "" " Encrypt pour en obtenir un.\n" " " -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Enregistrement public activé" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Enregistrement public désactivé" @@ -2654,11 +2676,11 @@ msgstr "Enregistrement public désactivé" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2671,7 +2693,7 @@ msgstr "" "contenant un wiki, prendre des notes ou collaborer entre amis sur des " "projets." -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2686,7 +2708,7 @@ msgstr "" "allant à la page Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2730,23 +2752,23 @@ msgstr "" "Verrouille l'accès. Seul les utilisateurs avec un compte peuvent lire/écrire " "sur ce wiki. Les inscriptions publiques sont également désactivées." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Mot de passe mis à jour" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Inscriptions publiques activées" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Inscriptions publiques désactivées" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Mode privé activé" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Mode privé désactivé" @@ -2755,11 +2777,11 @@ msgstr "Mode privé désactivé" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Bac à sable cubique" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2817,7 +2839,7 @@ msgstr "" "manière." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Adresse" @@ -2826,32 +2848,89 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Configuration du nombre maximum de joueurs mise à jour" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Configuration du mode créatif mise à jour" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "Configuration PVP mise à jour" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Configuration des blessures mise à jour" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Serveur VoIP Mumble" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "Partage de fichiers en pair-à-pair, sans [serveur] intermédiaire" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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 " @@ -2862,7 +2941,7 @@ msgstr "" "participer à de nombreux réseaux pairs-à-pairs dont eDonkey, Kademlia, " "Overnet, BitTorrent et DirectConnect." -#: plinth/modules/mldonkey/__init__.py:48 +#: plinth/modules/mldonkey/__init__.py:50 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 " @@ -2873,7 +2952,7 @@ msgstr "" "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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -2881,7 +2960,7 @@ msgstr "" "Sur {box_name}, les fichiers sont téléchargés dans le répertoire /var/lib/" "mldonkey/." -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Fichiers téléchargés avec les applications eDonkey" @@ -3062,15 +3141,15 @@ 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:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Chat vocal" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3078,7 +3157,7 @@ msgstr "" "Mumble est un logiciel de chat vocal de haute qualité, open source, crypté " "et à faible temps de latence." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3089,6 +3168,18 @@ msgstr "" "de se connecter à Mumble depuis un ordinateur ou un appareil tournant sous " "Android." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "Mot de passe du serveur SSH" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3097,6 +3188,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Mot de passe changé avec succès." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Serveur de Noms" @@ -3152,23 +3249,23 @@ msgstr "Utilise DNSSEC sur IPv{kind}" msgid "Connection Type" msgstr "Type de Connexion" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Nom Connexion" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Interface Physique" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "L'appareil réseau auquel cette connexion devrait être liée." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Zone pare-feu" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3176,21 +3273,21 @@ msgstr "" "La zone pare-feu contrôlera quels services sont disponibles via ces " "interfaces. Sélectionnez « Interne » seulement pour des réseaux de confiance." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Externe" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Interne" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "Méthode d'adressage IPv4" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3202,19 +3299,19 @@ msgstr "" "fera agir {box_name} en tant que routeur, lui fera configurer les clients " "sur ce réseau et partagera sa connexion Internet." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automatique (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Partagée" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Masque de sous-réseau" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3222,21 +3319,21 @@ msgstr "" "Valeur optionnelle. Si laissée vide, un masque de sous-réseau basé sur " "l'adresse sera utilisé par défaut." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Passerelle" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Valeur optionnelle." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "Serveur DNS" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3245,11 +3342,11 @@ msgstr "" "d'adressage IPv4 est « Automatique », les serveurs DNS fournis par le " "serveur DHCP seront ignorés." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Second Serveur DNS" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3258,11 +3355,11 @@ msgstr "" "d'adressage IPv4 est « Automatique », les serveurs DNS fournis par le " "serveur DHCP seront ignorés." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "Méthode d'adressage IPv6" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3271,27 +3368,27 @@ msgstr "" "Les méthodes « automatiques » feront en sorte que {box_name} obtienne sa " "configuration depuis ce réseau en tant que client." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automatique" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automatique, DHCP uniquement" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Ignorer" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Préfixe" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Valeur entre 1 et 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3300,7 +3397,7 @@ msgstr "" "d'adressage IPv6 est « Automatique », les serveurs DNS fournis par le " "serveur DHCP seront ignorés." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3309,54 +3406,54 @@ msgstr "" "d'adressage IPv6 est « Automatique », les serveurs DNS fournis par le " "serveur DHCP seront ignorés." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- sélectionner --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Le nom visible du réseau." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Mode" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastructure" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Point d'accès" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Bande de fréquences" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Canal" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3365,11 +3462,11 @@ msgstr "" "fréquence sélectionnée. Une valeur vide ou égale à 0 signifie une sélection " "automatique." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3379,11 +3476,11 @@ msgstr "" "connexion à un point d'accès, connectez-vous seulement si la BSSID du point " "d'accès correspond à celle fournie. Exemple : 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Mode Authentification" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3391,11 +3488,11 @@ msgstr "" "Sélectionner WPA si votre réseau sans fil est sécurisé et s'il demande aux " "clients un mot de passe pour se connecter." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Ouvert" @@ -3604,7 +3701,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Méthode" @@ -3620,6 +3717,7 @@ msgstr "Serveur DNS" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Défaut" @@ -3632,7 +3730,7 @@ msgid "This connection is not active." msgstr "Cette connexion n'est pas active." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Sécurité" @@ -3696,13 +3794,13 @@ msgstr "Espacement" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3745,11 +3843,11 @@ msgstr "Créer..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Réseau privé virtuel" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3766,7 +3864,7 @@ msgstr "" "internes via {box_name}. Vous pouvez aussi accéder à l'Internet via " "{box_name} depuis votre réseau pour une sécurité et un anonymat accrus." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" @@ -3774,7 +3872,7 @@ msgstr "" " Télécharger le profil" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "Activer le serveur OpenVPN" @@ -3931,7 +4029,7 @@ msgstr "" "Sélectionner votre serveur pagekite. Établir \"pagekite.net\" pour une " "utilisation par défaut du serveur pagekite.net." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Port serveur" @@ -4200,11 +4298,11 @@ msgstr "Éteindre Maintenant" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Serveur mandataire web" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4215,7 +4313,7 @@ msgstr "" "pages Web ou des en-têtes HTTP ainsi que de contrôler l'accès et de retirer " "les publicités ou autres éléments nuisibles de l'Internet. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4231,7 +4329,7 @@ msgstr "" "config.privoxy.org\">http://config.privoxy.org/ ou http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accéder à l'URL {url} avec le proxy {proxy} sur tcp{kind}" @@ -4240,11 +4338,11 @@ msgstr "Accéder à l'URL {url} avec le proxy {proxy} sur tcp{kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "Client IRC" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4261,7 +4359,7 @@ msgstr "" "vous soyez toujours en ligne. Un ou plusieurs clients Quassel basés sur un " "ordinateur ou un mobile servent à se brancher sur le cœur ou s'en débrancher." -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your application client compatible. N'importe quel utilisateur disposant " "d'un compte {box_name} peut accéder à Radicale." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4396,7 +4494,7 @@ msgstr "" "https://) et votre compte-utilisateur. Cliquer sur le " "bouton de recherche listera les calendriers et carnets d'adresses existants." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Configuration des droits d'accès mise à jour" @@ -4514,11 +4612,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "Client courriel" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4532,7 +4630,7 @@ msgstr "" "d'adresses, une gestion des dossiers, une recherche des messages et un " "correcteur orthographique." -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 msgid "" "You can access Roundcube from /roundcube. Provide the username and password of the email account " @@ -4549,7 +4647,7 @@ msgstr "" "(recommandé), remplissez les champs du serveur avec par exemple " "imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4569,7 +4667,7 @@ msgstr "" msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -4577,7 +4675,7 @@ msgstr "" "Samba permet de partager des fichiers et des répertoires entre FreedomBox et " "d’autres machines de votre réseau local." -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4589,7 +4687,7 @@ msgstr "" "de votre réseau local et sont accessibles dans la section Réseau du " "gestionnaire de fichiers de votre ordinateur." -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "Accéder aux répertoires partagés depuis le serveur" @@ -4640,20 +4738,20 @@ msgstr "Nom du partage" msgid "Action" msgstr "Action" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "Partage activé." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Erreur lors de l'activation du partage : {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "Partage désactivé." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Erreur lors de la désactivation du partage : {error_message}" @@ -4662,11 +4760,11 @@ msgstr "Erreur lors de la désactivation du partage : {error_message}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Recherche sur le Web" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4675,7 +4773,7 @@ msgstr "" "privée. Il rassemble et affiche les résultats de plusieurs moteurs de " "recherche." -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4683,7 +4781,7 @@ msgstr "" "Searx peut être utilisé pour éviter le pistage et le profilage fait par les " "moteurs de recherche. Il ne stocke aucun cookie par défaut." -#: plinth/modules/searx/__init__.py:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Rechercher sur le web" @@ -4718,16 +4816,16 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Permettre à tous ceux qui peuvent accéder à cette application de l'utiliser." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Configuration actualisée." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Restreindre les sessions console (recommandé)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4738,11 +4836,11 @@ msgstr "" "console pourraient avoir accès à certains services sans autorisation " "supplémentaire." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2ban (recommandé)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4758,7 +4856,7 @@ msgid "Show security report" msgstr "Montrer le rapport de sécurité" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "Rapport de sécurité" @@ -4791,12 +4889,12 @@ msgstr "failles actuelles" msgid "Past Vulnerabilities" msgstr "Anciennes failles" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Erreur lors de l'établissement de l'accès restreint : {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Configuration de sécurité mise à jour" @@ -4828,11 +4926,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Mandataire Socks5" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4842,7 +4940,7 @@ msgstr "" "votre trafic Internet. Il peut servir à court-circuiter le filtrage et la " "censure d'Internet." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4856,7 +4954,7 @@ msgstr "" "mandataire, et leurs flux de données seront chiffrés et transmis à travers " "le serveur Shadowsocks." -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4870,25 +4968,25 @@ msgstr "" msgid "Recommended" msgstr "Recommandé" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Serveur" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Nom ou adresse IP du serveur" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Numéro de port du serveur" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "Mot de passe utilisé pour chiffrer les données. Doit correspondre au mot de " "passe du serveur." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" "Méthode de chiffrage. Doit correspondre à ce qui a été configuré sur le " @@ -4957,48 +5055,48 @@ msgstr "Un partage existe déjà avec ce nom." msgid "Shares should be either public or shared with at least one group" msgstr "Les partages peuvent être publics ou restreints à au moins un groupe" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Ajouter un partage" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Aucun partage actuellement configuré." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Chemin" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Partagé sur" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "Au moyen de groupes" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "Accès public" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Partage créé." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Ajouter un partage" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Partage modifié." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Modifier un partage" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Partage supprimé." @@ -5073,43 +5171,43 @@ msgstr "" "Active ou désactive la prise d'instantanés avant et après l'installation de " "logiciels" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Limite d'instantanés horaires" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Maximum d'instantanés pris chaque heure à conserver." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Limite d'instantanés quotidiens" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Maximum d'instantanés pris chaque jour à conserver." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Limite d'instantanés hebdomadaires" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Maximum d'instantanés pris chaque semaine à conserver." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Limite d'instantanés mensuels" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Maximum d'instantanés pris chaque mois à conserver." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Limite d'instantanés annuels" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5193,11 +5291,11 @@ msgstr "Gestion des instantanés" msgid "Created snapshot." msgstr "Instantané créé." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Configuration du stockage des instantanés mise à jour" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Erreur sur action : {0} [{1}] [{2}]" @@ -5308,87 +5406,133 @@ msgstr "" "{box_name}. Vous pouvez vour les media de stockage utilisés actuellement, " "monter et démonter les média amovibles , étendre la partition racine, etc." -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} octets" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} Kio" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Mio" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Gio" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Tio" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "L'opération a échoué." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "L'opération a été annulée." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "Le media est déjà en train d'être démonté." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "L'opération n'est pas gérée à cause du manque d'un pilote ou d'un outil " "adapté." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 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:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "Tentative de démonter un media qui a du travail en cours." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "L'opération a déjà été annulée." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 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:262 msgid "The device is already mounted." msgstr "Le media est déjà monté." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "Le media n'est pas monté." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "Vous n'êtes pas autorisé à utiliser l'option demandée." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "Le media est monté par un autre utilisateur." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid repository name." +msgid "Invalid directory name." +msgstr "Nom de dépôt invalide." + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Répertoire de téléchargement" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "Le media est monté par un autre utilisateur." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Répertoire de téléchargement" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Samba" +msgid "Samba share" +msgstr "Samba" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Les media de stockage suivants sont en cours d'utilisation :" @@ -5462,11 +5606,11 @@ msgstr "Erreur lors de l'éjection du media : {error_message}" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Synchronisation de fichiers" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5479,7 +5623,7 @@ msgstr "" "seront automatiquement répliquées aux autres appareils qui utilisent " "Syncthing." -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5497,7 +5641,7 @@ msgstr "" "groupe distinct de dossiers. L'interface Web sur {box_name} est seulement " "disponible pour les utilisateurs appartenant au groupe \"admin\"." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "Administre l'application Syncthing" @@ -5505,11 +5649,11 @@ msgstr "Administre l'application Syncthing" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Stockage distribué de fichiers" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5521,7 +5665,7 @@ msgstr "" "sur un réseau distribué de nœuds de stockage. Même si certains des nœuds " "échouent, vos fichiers peuvent être retrouvés depuis les nœuds restants." -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5589,55 +5733,55 @@ msgstr "" "recommande l'utilisation du navigateur Tor." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "Service Tor Onion" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Mandataire Socks Tor" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Relais pont Tor" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Port du relais Tor disponible" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Transport Obfs3 enregistré" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Transport Obfs4 enregistré" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmez l'utilisation de Tor pour {url} sur tcp{kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "Entrez un pont valide avec ce format : [transport] IP:ORPort [fingerprint]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Activer Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Utilisez des ponts upstream pour vous connecter au réseau Tor" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5647,11 +5791,11 @@ msgstr "" "réseau Tor. Utilisez cette option si votre FAI bloque ou censure les " "connexions au réseau Tor. Cela désactivera les modes relais." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Ponts upstream" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5662,11 +5806,11 @@ msgstr "" "informations du pont ici. Les transports pris en charge actuellement sont " "aucun, obfs3, obfs4 et scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Activer le relais Tor" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5677,11 +5821,11 @@ msgstr "" "don de bande passante au réseau Tor. Faites cela si vous avez plus de 2 " "mégabits/s de bande passante de téléchargement et d'envoi." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Activer le relais pont Tor" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5692,14 +5836,20 @@ msgstr "" "rendant ainsi plus difficile de censurer ce nœud. Cela aide d'autres de " "contourner la censure." -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +#, fuzzy +#| msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Activer le service Tor Onion" -#: plinth/modules/tor/forms.py:131 -#, python-brace-format +#: plinth/modules/tor/forms.py:120 +#, fuzzy, python-brace-format +#| msgid "" +#| "An onion service will allow {box_name} to provide selected services (such " +#| "as wiki or chat) without revealing its location. Do not use this for " +#| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5707,11 +5857,11 @@ msgstr "" "sélectionnés (comme un wiki ou Chat) sans révéler votre emplacement. Ne pas " "encore utiliser pour l'anonymat fort." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Téléchargez les logiciels via Tor" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5721,7 +5871,7 @@ msgstr "" "installation et mises à niveau. Ce processus ajoute un degré de sécurité et " "de confidentialité durant le téléchargement des logiciels." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "Spécifiez au moins un pont upstream pour utiliser des ponts upstream." @@ -5774,7 +5924,7 @@ msgstr "" msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5783,29 +5933,19 @@ msgstr "" "Transmission permet le partage de fichiers Bitorrent. Noter que " "l'utilisation de Bitorrent n'est pas anonyme." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Répertoire de téléchargement" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Répertoire où les téléchargements sont sauvegardés. Si vous changez le " -"répertoire par défaut, assurez-vous que ce nouveau répertoire existe bien et " -"qu'il est ouvert en écriture pour l'utilisateur \"debian-transmission\"." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Lecteur de flux d'informations" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5816,16 +5956,16 @@ msgstr "" "restant au plus près du design d'une application utilisée sur le bureau d'un " "ordinateur." -#: plinth/modules/ttrss/__init__.py:52 +#: plinth/modules/ttrss/__init__.py:54 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -"Une fois activé, Tiny Tiny RSS peut être consulté par tout utilisateur avec un compte {box_name}." +"Une fois activé, Tiny Tiny RSS peut être consulté par tout utilisateur avec un compte {box_name}." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for " @@ -5835,7 +5975,7 @@ msgstr "" "utilisez l'URL tt-rss-" "app pour se connecter." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Lire et souscrire à des abonnements d'infos" @@ -5843,7 +5983,7 @@ msgstr "Lire et souscrire à des abonnements d'infos" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Actualiser" @@ -5918,11 +6058,11 @@ msgstr "Mise à niveau démarrée." msgid "Starting upgrade failed." msgstr "Échec du démarrage de la mise à niveau." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Utilisateurs et Groupes" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -5933,7 +6073,7 @@ msgstr "" "Certaines nécessitent en plus qu'un compte fasse partie d'un groupe pour " "autoriser l'utilisateur à accéder à l'application." -#: plinth/modules/users/__init__.py:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5945,7 +6085,7 @@ msgstr "" "revanche, seuls les utilisateurs du groupe admin pourront modifier " "ces applications ou les paramètres-système." -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Vérification de l'entrée LDAP \"{search_item}\"" @@ -5954,15 +6094,15 @@ msgstr "Vérification de l'entrée LDAP \"{search_item}\"" msgid "Access to all services and system settings" msgstr "Accès à tous les services et les configurations-système" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "Le nom d'utilisateur est déjà pris ou est réservé." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Permissions" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5977,20 +6117,20 @@ msgstr "" "peuvent également se connecter au système avec Secure Shell (SSH) et se voir " "accorder le mode superutilisateur (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "La création de l'utilisateur LDAP n'a pas abouti." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Échec de l'ajout d'un nouvel utilisateur au groupe {group}." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Clés SSH autorisées" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6001,39 +6141,39 @@ msgstr "" "clefs multiples, une sur chaque ligne. Les lignes vides et celles commençant " "par # seront ignorées." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "Le changement du nom de l'utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Échec du retrait de l'utilisateur du groupe." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Échec de l'ajout de l'utilisateur au groupe." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "Impossible de définir les clés SSH." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "Impossible de supprimer le seul administrateur de ce système." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Le changement de mot de passe pour l'utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "L'ajout du nouvel utilisateur au groupe administrateur n'a pas abouti." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Échec de la restriction de l'accès à la console." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Compte utilisateur créé, vous êtes maintenant connecté." @@ -6049,12 +6189,12 @@ msgstr "Sauvegarder Mot de Passe" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Créer Utilisateur" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Supprimer Utilisateur" @@ -6088,7 +6228,7 @@ msgid "Create Account" msgstr "Créer le compte" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Utilisateurs" @@ -6116,62 +6256,62 @@ msgstr "" msgid "Save Changes" msgstr "Sauvegarder Modifications" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Utilisateur %(username)s créé." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "Utilisateur %(username)s mis à jour." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Modifier Utilisateur" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "Utilisateur {user} supprimé." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "La suppression de l'utilisateur LDAP a échoué." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Changer Mot de Passe" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Mot de passe changé avec succès." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Générique" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Erreur pendant l'installation" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "installation" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "téléchargement" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "Changement de support" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "fichier de configuration : {file}" @@ -6223,12 +6363,12 @@ msgstr "" "a> pour traitement et réparation. Veuillez également attacher le journal d'état au rapport d'erreur." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "Le service %(service_name)s est en fonctionnement." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "Le service %(service_name)s n'est pas en fonctionnement." @@ -6340,6 +6480,10 @@ msgstr "" "Veuillez attendre que %(box_name)s termine l’installation. Vous pourrez " "utiliser votre %(box_name)s quand ce sera fait." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Installation" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6435,20 +6579,16 @@ msgstr "" "mettre en place une redirection de port sur votre routeur. Vous devriez " "rediriger les ports suivants pour %(service_name)s :" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Installation" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Installer cette application ?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" "Cette application a besoin d'une mise à jour. Mettre à jour maintenant ?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6456,29 +6596,29 @@ msgstr "" "Une autre installation ou mise à niveau est déjà en cours d’exécution. " "Veuillez patienter quelques instants avant de réessayer." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" "Cette application n'est actuellement pas disponible dans votre distribution." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Installer" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Pré-installation en cours" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Post-installation en cours" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "Installation de %(package_names)s: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% effectué" @@ -6491,18 +6631,28 @@ msgstr "Lancer le client Web" msgid "Client Apps" msgstr "Applications clientes" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Application activée" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Application désactivée" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Gujarati" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Répertoire où les téléchargements sont sauvegardés. Si vous changez le " +#~ "répertoire par défaut, assurez-vous que ce nouveau répertoire existe bien " +#~ "et qu'il est ouvert en écriture pour l'utilisateur \"debian-transmission" +#~ "\"." + #~ msgid "OpenVPN server is running" #~ msgstr "Le serveur OpenVPN est actif" @@ -7428,9 +7578,6 @@ msgstr "Gujarati" #~ msgid "Generated PGP key." #~ msgstr "Clef PGP générée." -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Serveur VoIP Mumble" - #~ msgid "Enable Mumble daemon" #~ msgstr "Activer le daemon Mumble" diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index aac942a7b..9417217e2 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-07-11 08:01+0000\n" "Last-Translator: Miguel A. Bouzada \n" "Language-Team: Galician any user on {box_name} " "belonging to the admin group." msgstr "" +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -628,13 +648,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -659,11 +679,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -674,11 +694,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -688,51 +708,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "Amosa aplicativos e funcións que requiren maior coñecemento técnico." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Configurar a páxina de inicio do servidor web" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -740,7 +760,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -838,23 +858,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -872,7 +892,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -960,18 +980,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1010,46 +1030,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1058,68 +1078,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1178,7 +1198,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1186,15 +1206,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1202,18 +1222,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1450,7 +1470,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1520,33 +1540,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1555,8 +1575,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -1695,7 +1715,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1809,11 +1829,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1821,23 +1841,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1850,7 +1870,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1886,18 +1906,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1906,22 +1926,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1960,32 +1980,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1994,15 +2014,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2029,11 +2049,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2138,36 +2158,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2176,7 +2196,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2186,7 +2206,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2223,7 +2243,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2255,11 +2275,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2268,11 +2288,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2280,7 +2300,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2289,7 +2309,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2325,23 +2345,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2350,11 +2370,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2400,7 +2420,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2409,52 +2429,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2616,27 +2691,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2645,6 +2730,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2691,43 +2780,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2735,176 +2824,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3111,7 +3200,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3127,6 +3216,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3139,7 +3229,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3192,13 +3282,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3241,11 +3331,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3256,13 +3346,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3390,7 +3480,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3631,18 +3721,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3652,7 +3742,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3661,11 +3751,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3676,7 +3766,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3885,7 +3975,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3899,13 +3989,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3913,7 +4003,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3962,21 +4052,21 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Produciuse un erro ao instalar o aplicativo: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -3986,23 +4076,23 @@ msgstr "Produciuse un erro ao instalar o aplicativo: {error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4034,27 +4124,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4067,7 +4157,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4096,12 +4186,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4129,18 +4219,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4149,7 +4239,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4160,23 +4250,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4235,48 +4325,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4334,43 +4424,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4446,11 +4536,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4549,83 +4639,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4691,11 +4817,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4703,7 +4829,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4714,7 +4840,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4722,11 +4848,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4734,7 +4860,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4790,76 +4916,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4867,41 +4993,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4950,53 +5076,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5004,7 +5123,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5070,18 +5189,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5089,7 +5208,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5098,15 +5217,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5115,59 +5234,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5183,12 +5302,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5218,7 +5337,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5244,62 +5363,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5342,12 +5461,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5457,6 +5576,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5536,46 +5659,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5588,14 +5707,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index f3bea4a9d..dd36dd8b0 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2018-02-05 18:37+0000\n" "Last-Translator: drashti kaushik \n" "Language-Team: Gujarati any user on {box_name} " @@ -651,11 +651,31 @@ msgstr "" "સાથે{box_name} લૉગિન દ્વારા ઍક્સેસ કરી શકાય છે. સંવેદનશીલ માહિતી અને વ્યવસ્થાપનની " "ક્ષમતાઓ એડમિન ગ્રૂપના વપરાશકર્તાઓ માટે મર્યાદિત છે." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "સામાન્ય ગોઠવણી" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -663,13 +683,13 @@ msgstr "સામાન્ય ગોઠવણી" msgid "Configure" msgstr "ગોઠવો" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "ક્ષેત્રનું નામ" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "અમાન્ય ક્ષેત્રીય નામ" @@ -698,11 +718,11 @@ msgstr "" "માત્ર મૂળાક્ષરો, આંકડા અને હાયફન હોવા જોઈએ.…તેની કુલ લંબાઈ ૬૩ અક્ષરો કે તેથી ઓછી હોવી " "જોઈએ." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "અમાન્ય હોસ્ટનું નામ" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -718,11 +738,11 @@ msgstr "" "મૂળાક્ષરો, આંકડા અને હાયફન હોવા જોઈએ.…દરેક લેબલની કુલ લંબાઈ ૬૩ અક્ષરો કે તેથી ઓછી હોવી " "જોઈએ.…ક્ષેત્રીય નામની કુલ લંબાઈ ૨૫૩ અક્ષરો કે તેથી ઓછી હોવી જોઈએ." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -732,53 +752,53 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "હોસ્ટનું નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "હોસ્ટનું નામ સ્થાપિત કર્યું" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "ક્ષેત્રીય નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "ક્ષેત્રીય નામ સ્થાપિત કર્યું" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "હોસ્ટનું નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "ક્ષેત્રીય નામ સ્થાપિત કરતાં ભૂલ થઇ: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -786,7 +806,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -890,16 +910,16 @@ msgstr "સમય વિસ્તાર ગોઠવ્યો" msgid "Deluge" msgstr "અનરાધાર" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "બીટ ટોરેન્ટ વેબ ક્લાયન્ટ" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge બીટ ટોરેન્ટ ક્લાયન્ટ છે જે વેબ UI ધરાવે છે." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from થી ઉપલબ્ધ થશે. તેનો પહેલાથી નક્કી પાસવર્ડ 'deluge' છે, પરંતુ આ સેવા સક્રિય " "કાર્ય બાદ તુરંત જ આપે લોગ ઇન કરી ને તેને બદલી નાખવો જોઈએ." -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "BitTorrent કાર્યક્રમોનો ઉપયોગ કરીને ફાઇલો ડાઉનલોડ કરો" @@ -935,7 +955,7 @@ msgstr "" "સીસ્ટમ તપાસ પરિક્ષણ આપની એપ્લીકેશન અને સેવાઓ નિર્ધારિત રીતે કામ કરે છે કે નહિ, તે ચકાસવા " "આપની સીસ્ટમ પર અમુક પરીક્ષણો કરશે." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "તપાસકીય પરિક્ષણ" @@ -1031,18 +1051,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "સેટઅપ અપડેટ કરો" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "સેટિંગ યથાવત" @@ -1092,7 +1112,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "ક્ષેત્રનું નામ" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1101,7 +1121,7 @@ msgstr "" "ચલો <વપરાશકર્તા>,Pass>, <lp>, <ડોમેન> URL ની અંદર ઉપયોગ " "કરી શકાય છે. વિગતો માટે ઉદાહરણ પ્રદાતાઓના અપડેટ URL નમૂનાઓ જુઓ." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1111,7 +1131,7 @@ msgstr "" "પ્રોટોકોલને આધારભૂત નથી અથવા તમારા પ્રદાતા સૂચિબદ્ધ નથી તો તમે તમારા પ્રદાતાના અપડેટ " "URL નો ઉપયોગ કરી શકો છો." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1119,16 +1139,16 @@ msgstr "" "અહીં આવુ URL દાખલ કરશો નહીં (જેમ કે \"https://example.com/\") પરંતુ ફક્ત GnuDIP " "સર્વરનું હોસ્ટનામ (જેમ કે \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "તમારા સુધી પહોંચવા માટે ઉપયોગમાં લેવાતું પબ્લિક ડોમેન નામ {box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "આ વિકલ્પનો ઉપયોગ કરો જો તમારા પ્રદાતા સ્વ સહી કરેલ પ્રમાણપત્રોનો ઉપયોગ કરે છે." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1136,11 +1156,11 @@ msgstr "" "જો આ વિકલ્પ પસંદ કરેલ હોય, તો તમારું વપરાશકર્તા નામ અને પાસવર્ડ HTTP મૂળભૂત પ્રમાણીકરણ " "માટે ઉપયોગમાં લેવાશે." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "જો તમે તમારા વર્તમાન પાસવર્ડને રાખવા માંગતા હો તો આ ક્ષેત્ર ખાલી રાખો." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1152,68 +1172,68 @@ msgstr "" "સાથે જોડાયેલું છે) તો આ URL વાસ્તવિક IP એડ્રેસને નક્કી કરવા માટે વપરાય છે. URL IP ને જ્યાં " "ક્લાઈન્ટમાંથી આવે છે ત્યાં જ પાછો મોકલવો જોઈએ (દા.ત http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "વપરાશકર્તાનામ જેનો ઉપયોગ એકાઉન્ટ બનાવવામાં આવ્યો હતો ત્યારે થયો હતો." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "ડાયનેમિક DNS સક્ષમ કરો" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "સેવા પ્રકાર" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "GnuDIP સર્વર સરનામું" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "અમાન્ય સર્વર નામ" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "URL અપડેટ કરો" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "બધા SSL પ્રમાણપત્રો સ્વીકારો" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "HTTP મૂળભૂત પ્રમાણીકરણનો ઉપયોગ કરો" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "વપરાશકર્તા નામ" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "પાસવર્ડ" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "પાસવર્ડ બતાવો" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "જાહેર IP જોવા URL" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "કૃપા કરીને અપડેટ URL અથવા GnuDIP સર્વર સરનામું પ્રદાન કરો" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "કૃપા કરીને GnuDIP વપરાશકર્તાનામ આપો" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "કૃપા કરીને GnuDIP ડોમેન નામ પ્રદાન કરો" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "કૃપા કરીને પાસવર્ડ આપો" @@ -1287,7 +1307,7 @@ msgstr "છેલ્લો સુધારો" msgid "About" msgstr "વિશે" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1295,15 +1315,15 @@ msgstr "વિશે" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "સ્થિતિ" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "ડાયનેમિક DNS રૂપરેખાંકિત કરો" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "ડાયનેમિક DNS સ્થિતિ" @@ -1311,12 +1331,12 @@ msgstr "ડાયનેમિક DNS સ્થિતિ" msgid "ejabberd" msgstr "ઈઝબેબર્ડ" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "ચેટ સર્વર" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1324,7 +1344,7 @@ msgstr "" "XMPP એક ખુલ્લું અને પ્રમાણિત સંચાર પ્રોટોકોલ છે. અહીં તમે તમારા XMPP સર્વરને ચલાવો અને " "ગોઠવી શકો છો, જેને ઈઝબેબર્ડે કહેવાય છે." -#: plinth/modules/ejabberd/__init__.py:58 +#: plinth/modules/ejabberd/__init__.py:60 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1601,7 +1621,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1679,35 +1699,35 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Documentation" msgid "Edit repository" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1716,8 +1736,8 @@ msgstr "" msgid "Documentation" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "માર્ગદર્શિકા" @@ -1856,7 +1876,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1972,11 +1992,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1984,25 +2004,25 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "એપ્લીકેશનને પ્રસ્થાપિત કરો" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -2015,7 +2035,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2051,18 +2071,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2071,22 +2091,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -2125,32 +2145,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2159,15 +2179,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2194,11 +2214,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2303,36 +2323,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2341,7 +2361,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2351,7 +2371,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2390,7 +2410,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2422,11 +2442,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2437,11 +2457,11 @@ msgstr "એપ્લીકેશન પ્રસ્થાપિત થઇ ગઈ msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2449,7 +2469,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2458,7 +2478,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2498,29 +2518,29 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Application installed." msgid "Public registrations enabled" msgstr "એપ્લીકેશન પ્રસ્થાપિત થઇ ગઈ છે." -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Application installed." msgid "Public registrations disabled" msgstr "એપ્લીકેશન પ્રસ્થાપિત થઇ ગઈ છે." -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 #, fuzzy #| msgid "Application enabled" msgid "Private mode enabled" msgstr "એપ્લિકેશન સક્ષમ કરો" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy #| msgid "Application disabled" msgid "Private mode disabled" @@ -2531,11 +2551,11 @@ msgstr "એપ્લિકેશન અક્ષમ છે" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2581,7 +2601,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2590,52 +2610,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" @@ -2799,27 +2874,39 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +#, fuzzy +#| msgid "Please provide a password" +msgid "Set SuperUser Password" +msgstr "કૃપા કરીને પાસવર્ડ આપો" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2828,6 +2915,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2874,43 +2965,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2918,176 +3009,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3294,7 +3385,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3310,6 +3401,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3322,7 +3414,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3375,13 +3467,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3426,11 +3518,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3441,13 +3533,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3575,7 +3667,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3816,18 +3908,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3837,7 +3929,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3846,11 +3938,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3861,7 +3953,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -4070,7 +4162,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4084,13 +4176,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4098,7 +4190,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4147,23 +4239,23 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Application disabled" msgid "Share disabled." msgstr "એપ્લિકેશન અક્ષમ છે" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4173,23 +4265,23 @@ msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતા msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4221,27 +4313,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4254,7 +4346,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4283,12 +4375,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4316,18 +4408,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4336,7 +4428,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4347,23 +4439,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4422,48 +4514,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4521,43 +4613,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4633,12 +4725,12 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy msgid "Storage snapshots configuration updated" msgstr "DNSSEC ગોઠવણીને સુધારેલી શરુ કરો" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4741,83 +4833,121 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "અમાન્ય હોસ્ટનું નામ" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4883,11 +5013,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4895,7 +5025,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4906,7 +5036,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4914,11 +5044,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4926,7 +5056,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4982,76 +5112,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5059,41 +5189,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5144,39 +5274,32 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5202,7 +5325,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5274,18 +5397,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5293,7 +5416,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5302,15 +5425,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5319,59 +5442,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5387,12 +5510,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5422,7 +5545,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5448,62 +5571,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5546,12 +5669,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5663,6 +5786,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5744,46 +5871,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5798,15 +5921,15 @@ msgstr "વેબ ક્લાયન્ટ શરૂ કરો" msgid "Client Apps" msgstr "બીટ ટોરેન્ટ વેબ ક્લાયન્ટ" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "એપ્લિકેશન સક્ષમ કરો" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "એપ્લિકેશન અક્ષમ છે" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index 10a423837..9be5f6e81 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2018-08-09 20:39+0000\n" "Last-Translator: Gayathri Das \n" "Language-Team: Hindi /" @@ -694,11 +694,33 @@ msgstr "" "माैजूद होते है. यह कोई से एक {box_name} के सात पहुंच " "सकते हैं. निजी जानकारी आैर सिस्टम बदलने का योग्यता सिर्फ व्यवस्थापक लोग के पास है." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "अभिगम केंद्र" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "सामान्य कॉन्फ़िगरेशन" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -706,13 +728,13 @@ msgstr "सामान्य कॉन्फ़िगरेशन" msgid "Configure" msgstr "कॉन्फ़िगर करें" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "डोमेन नाम" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "अमान्य डोमेन नाम" @@ -742,11 +764,11 @@ msgstr "" "मिल सकते हैं । होस्ट नाम आल्फ़बेट या एक संख्या से शुरु और अंत करना पड़ता है आैर इसमे सिर्फ " "आल्फ़बेट,संख्या आैर हैफ़ेन होना पड़ता है. कुल अक्षर का लंबाई ६३ या कम होनी पड़ती है।" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "अमान्य होस्टनाम" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -761,13 +783,13 @@ msgstr "" "करना पड़ता है आैर इसमे सिर्फ आल्फ़बेट,संख्या आैर हैफ़ेन होना पड़ता है.हर लेबल का लंबाई ६३ अक्षर " "या कम होनी पड़ती है. डोमेन नाम कि कुल लंबाई २५३ अक्षर या कम होनी पड़ती है." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 #, fuzzy #| msgid "Web Server (HTTP)" msgid "Webserver Home Page" msgstr "वेब सर्वर (HTTP)" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, fuzzy, python-brace-format #| msgid "" #| "Choose the default web application that must be served when someone " @@ -789,53 +811,53 @@ msgstr "" "{box_name} के अलावा कुछ पर सेट करना है, आपके यूसकस {box_name} सर्विस (प्लिंथ) पहुचते के " "लिये प्लिंथ या फ्रीडमबॉक्स स्पष्ट रूप से टाइप करना पढ़ेगा." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "{exception}: होस्ट नाम सेट करने में एरर" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "होस्ट नाम सेट हो गया" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "{exception}: डोमेन नाम सेट करने में एरर" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "डोमेन नाम सेट हो गया है" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "{exception}: होस्ट नाम सेट करने में एरर" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "{exception}: डोमेन नाम सेट करने में एरर" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -843,7 +865,7 @@ msgstr "" msgid "Coquelicot" msgstr "कोकेलिकॉट" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "फ़ाइल शेयरइंग" @@ -955,16 +977,16 @@ msgstr "समय क्षेत्र सेट" msgid "Deluge" msgstr "डेलूज" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "बिटटोरेंट वेब ग्राहक" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "डेलूज एक बिटटोरेंट ग्राहक है जिसमे वेब युआई है." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from web " @@ -1478,18 +1500,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:50 #: plinth/modules/i2p/templates/i2p.html:26 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:31 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:30 #: plinth/modules/snapshot/templates/snapshot.html:27 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:43 -#: plinth/templates/app.html:98 +#: plinth/templates/app.html:70 msgid "Configuration" msgstr "कॉन्फ़िगरेशन" -#: plinth/modules/ejabberd/views.py:78 +#: plinth/modules/ejabberd/views.py:79 msgid "Message Archive Management enabled" msgstr "संदेश संग्रह प्रबंधन सक्षम किया गया है" -#: plinth/modules/ejabberd/views.py:82 +#: plinth/modules/ejabberd/views.py:83 msgid "Message Archive Management disabled" msgstr "संदेश संग्रह प्रबंधन अक्षम किया गया है" @@ -1536,7 +1558,7 @@ msgstr "सक्षम किया गया है" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:69 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 msgid "Disabled" msgstr "अक्षम किया गया है" @@ -1616,11 +1638,11 @@ msgstr "सेटअप पूरा हो गया" msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:45 +#: plinth/modules/gitweb/__init__.py:47 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:48 +#: plinth/modules/gitweb/__init__.py:50 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1631,13 +1653,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:55 +#: plinth/modules/gitweb/__init__.py:57 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1665,7 +1687,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1758,37 +1780,37 @@ msgstr "इस स्नैपशॉट को स्थाई रूप से msgid "Delete %(name)s" msgstr "%(name)s हटाईये" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "यूसर बनाये" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} हटा गया है." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} नहीं हटा गया है: {error}" @@ -1797,8 +1819,8 @@ msgstr "{name} नहीं हटा गया है: {error}" msgid "Documentation" msgstr "प्रलेखन" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "मैन्युअल" @@ -1953,7 +1975,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "और सीखिये..." @@ -2084,11 +2106,11 @@ msgstr "बग रिपोर्ट सबमिट करने से पह msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "गुमनामी नेटवर्क" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2096,7 +2118,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "एप्लिकेशन सक्षम करें" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -2135,7 +2157,7 @@ msgstr "लॉन्च" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2171,11 +2193,11 @@ msgstr "" msgid "ikiwiki" msgstr "इकिविकि" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "विकि और ब्लॉग" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2193,7 +2215,7 @@ msgstr "" "होने पर, ब्लॉग्स और विकि /इकिविकि/ (एक बार बनाए गए) पर " "उपलब्ध होंगे." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2206,22 +2228,22 @@ msgstr "" "विकी संपादितकर सकते है. वह युज़र कॉन्फ़िगरेशन पर " "आपको यह अनुमति बदल सकता और नया युज़रसॅ को जोडं सकता है." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "विकी एप्लिकेशन को देखें और संपादित करें" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "टाइप" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "व्यवस्थापक अकाउंट नाम" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "व्यवस्थापक अकाउंट पासवर्ड" @@ -2262,33 +2284,33 @@ msgstr "" "यह कार्य सब पोस्ट, पेज और टिप्पणियां निकाल देगी, संशोधन इतिहास भी. यह ब्लॉग और विकी " "हमेशा से हटा करें?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "विकी बनाया है {name}." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "विकी नहीं बना सकता है:{error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "ब्लॉग बनाया है {name}." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "ब्लॉग नहीं बना सकता है: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} हटा गया है." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2298,15 +2320,15 @@ msgstr "{name} नहीं हटा गया है: {error}" msgid "infinoted" msgstr "इन्फिनोटेड़" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "गोबी सर्वर" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "इन्फिनोटेड़ गोबी के एक सर्वर है, एक सहयोगी टेक्स्ट संपादक." -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2336,11 +2358,11 @@ msgstr "गोबी शुरू करें और \"सर्वर से msgid "JSXC" msgstr "जेएसएक्ससि" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "चैट क्लाइंट" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2460,7 +2482,7 @@ msgstr "" "कोई डोमेन कॉंफ़िगर नहीं किया गया है. डोमेन कॉंफ़िगर करें उंहें के लिए प्रमाणपत्र प्राप्त करने के " "लिये." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2469,29 +2491,29 @@ msgstr "" "डोमेन पर प्रमाणपत्र कामयाबी सेवापस ले लिया गया{domain}. यह कुछ समय को प्रभावी करने के " "लिए ले सकता है." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "डोमेन पर प्रमाणपत्र कामयाबी से वापस नहीं ले लिया गया{domain}:{error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "डोमेन के लिए प्रमाणपत्र कामयाबी से प्राप्त किया {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "डोमेन के लिए प्रमाणपत्र कामयाबी से नहीं प्राप्त किया {domain}:{error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "डोमेन के लिए प्रमाणपत्र कामयाबी से हटाया गया {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "डोमेन के लिए प्रमाणपत्र नहीं हटाया गया {domain}:{error}" @@ -2500,7 +2522,7 @@ msgstr "डोमेन के लिए प्रमाणपत्र नह msgid "Matrix Synapse" msgstr "मैट्रिक्स सिनापसॅ" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2515,7 +2537,7 @@ msgstr "" "मल्टीपल डिवाइस सिंक्रनाइज़इज़ाशिन और काम करने के लिए फोन नंबर की ज़रुरत नहीं है. मैट्रिक्स " "सर्वर पर यूसरसॅ सारे मैट्रिक्स सर्वर के लेग से बात कर सकते है फ़ेडरेशिन उपयोग कर." -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. " "@username:d omainname की तरह दिखेगा." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2565,7 +2587,7 @@ msgstr "" "समर्थित नहीं है.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2602,11 +2624,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "सार्वजनिक रजिस्टरेशिन सक्षम किया गया" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "सार्वजनिक रजिस्टरेशिन अक्षम किया गया" @@ -2615,11 +2637,11 @@ msgstr "सार्वजनिक रजिस्टरेशिन अक् msgid "MediaWiki" msgstr "मीडियाविकी" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "विकी" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2631,7 +2653,7 @@ msgstr "" "से-तरह वेबसाइट होस्ट करने के लिये, नोट्स लेने के लिये या दोस्तों के साथ प्रोजेक्ट्स पर कास कर " "सकते है." -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2644,7 +2666,7 @@ msgstr "" "उपयोग करके. फिर और यूसर अकाउंट मीडियाविकी खुद ही से बना सकते है यहां जा कर Special:CreateAccountपेज." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2686,23 +2708,23 @@ msgstr "" "अगर सक्षम है, प्रवेश प्रतिबंधित किया जाएगा. सिर्फ जो लोग जिनके पास अकाउंट है वो लोग " "विकी को पढ़/लिक सकते हैं. सार्वजनिक रेगीसट्रेशिन भी अक्षम कर दिए जाएंगे." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "पासवर्ड अपडेट" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "सार्वजनिक रेगीसट्रेशिन सक्षम किया" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "सार्वजनिक रेगीसट्रेशिन अक्षम किया" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "निजी मोड सक्षम किया" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "निजी मोड सक्षम किया" @@ -2711,11 +2733,11 @@ msgstr "निजी मोड सक्षम किया" msgid "Minetest" msgstr "मैइनटेस्ट" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "ब्लॉक सेंडबोक्स" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2766,7 +2788,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "अक्षम होने पर खिलाड़ियों नहीं मर सकते या किसी चोट लग सकते." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "ऍड्रेस" @@ -2775,22 +2797,77 @@ msgstr "ऍड्रेस" msgid "Port" msgstr "पोर्ट" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "अधिकतम खिलाड़ी कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "क्रिएटिव मोड कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "पिवीपि कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "क्षति कॉन्फ़िगरेशन अपडेट किया गया" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 #, fuzzy @@ -2798,33 +2875,33 @@ msgstr "क्षति कॉन्फ़िगरेशन अपडेट क msgid "MLDonkey" msgstr "मंकीसफीर" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 #, fuzzy #| msgid "File Sharing" msgid "Peer-to-peer File Sharing" msgstr "फ़ाइल शेयरइंग" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" @@ -3007,21 +3084,21 @@ msgstr "चाबी किसर्वर पर प्रकाशित क msgid "Error occurred while publishing key." msgstr "चाबी प्रकाशित करते समय एरर हो गया." -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "ममबल" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "वॉयस चैट" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "ममबल एक खुला सोरस, कम विलंबता, एन्क्रिप्टेड अच्छा गुणवत्ता आवाज चैट सॉफ्टवेयर है." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3031,6 +3108,18 @@ msgstr "" "mumble.info\">Clients अापके डेस्कटॉप और एंड्रॉयड डिवाइस से ममबल से कनेक्ट होने के " "लिए उपलब्ध हैं." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "Save Password" +msgid "Set SuperUser Password" +msgstr "पासवर्ड सहेजें" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "पलमबल" @@ -3039,6 +3128,12 @@ msgstr "पलमबल" msgid "Mumblefly" msgstr "ममबलफ्लाई" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "पासवर्ड सफलतापूर्वक बदल गया." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "नाम सरविस" @@ -3085,23 +3180,23 @@ msgstr "DNSSEC आईपीवी पर उपयोग कर रहा है msgid "Connection Type" msgstr "कनेक्शन टाइप" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "कनेक्शन का नाम" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "भौतिक इंटरफेस" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "जो नेटवर्क डिवाइस जिस को इस कनेक्शन बाउंड होना चाहिए." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "फ़ायरवॉल ज़ोन" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3109,21 +3204,21 @@ msgstr "" "इस इंटरफ़ेस में फ़ायरवॉल ज़ोन हैं जिसको नियंत्रित करेगा कि कौन-सी सेवाएं उपलब्ध है. सिर्फ " "भरोसेमंद नेटवर्क्स के लिए आंतरिक चुनिये." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "बाहरी" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "आंतरिक" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "आईपीवी 4 एड्रेसिंग मेथड" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3134,19 +3229,19 @@ msgstr "" "\"शएरड\" मेथड {box_name} राउटर के रूप में कार्य करेगा, इस नेटवर्क पर क्लाइंटस कॉंफ़िगरे " "करेगा और इंटरनेट कनेक्शन साझा करेगा." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "ऑटोमैटिक(DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "साझा किया गया" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "नेटमॉस्क" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3154,21 +3249,21 @@ msgstr "" "वैकल्पिक मूल्य. अगर इससे छोड़ा जाता है, एक एड्रेस पर आधारित डिफ़ॉल्ट नेटमॉस्क उपयोग किया " "जाएगा." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "गेटवे" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "वैकल्पिक मूल्य." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "डीएनएस सर्वर" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3176,11 +3271,11 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी4 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "दूसरा DNS सर्वर" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3188,11 +3283,11 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी4 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "आइपीवी एड्रेसिंग मेथड" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3201,27 +3296,27 @@ msgstr "" "\"ऑटोमैटिक\" मेथडस {box_name} को इस नेटवर्क से कॉंफ़िगरेशन प्राप्त करना पडेगा और एक " "क्लाइंट बना देगी." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "ऑटोमैटिक" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "ऑटोमैटिक, सिर्फ DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "नज़रअंदाज़ करे" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "उपसर्ग" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "1 और १२८ के बीच एक मूल्य." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3229,7 +3324,7 @@ msgstr "" "वैकल्पिक मूल्य.अगर यह मूल्य दिया जाता है और आइपीवी6 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3237,54 +3332,54 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी6 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- चुनिये --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "एसएसआईडी" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "यह नेटवर्क का दृश्य नाम." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "मोड" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "इंफ्रास्ट्रक्चर" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "अभिगम केंद्र" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "एड-हॉक" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "फ्रीक्वेंसी बैंड" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "ए ( 5 जीएचज़ि)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "बी/जी (२.४ जीएचज़ि)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "चैनल" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3292,11 +3387,11 @@ msgstr "" "वैकल्पिक मूल्य. चुने हूआ फ्रीक्वेंसी बैंड में वायरलेस चैनल, प्रतिबंधित करने के लिये. रिक्त या 0 मूल्य " "का मतलब है ऑटोमैटिक चुनाव." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "बिएसएसआई़़डी" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3306,22 +3401,22 @@ msgstr "" "एक्सेस पॉइंट का BSSID प्रदान की गई से मैच करते है तो कनेक्ट करें. उदाहरण: 00:11:22:aa:bb:" "cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "प्रमाणीकरण मोड" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" "अगर वायरलेस नेटवर्क सुरक्षित है और क्लाइंट को कनेक्ट करने के लिए पासवर्ड ज़रुरत है WPA चुनिये." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "खुला" @@ -3528,7 +3623,7 @@ msgstr "आईपीवी4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "तरीका" @@ -3544,6 +3639,7 @@ msgstr "डीएनएस सर्वर" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "डिफ़ॉल्ट" @@ -3556,7 +3652,7 @@ msgid "This connection is not active." msgstr "यह कनेक्शन सक्रिय नहीं है." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "सुरक्षा" @@ -3618,13 +3714,13 @@ msgstr "स्‍पेसिंग" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "इथरनेट" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "वाई-फ़ाई" @@ -3669,11 +3765,11 @@ msgstr "बनाएँ…" msgid "OpenVPN" msgstr "ओपन वीपीएन" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "वर्चुअल प्राइवेट नेटवर्क" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3689,14 +3785,14 @@ msgstr "" "आंतरिक सर्विसस उपयोग करने के लिये. आप बाकी सब इंटरनेट {box_name} के जरिए उपयोग कर " "सकते हैं अगर अापको और सुरक्षा और गुमनामी चाहिये." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "डाउनलोड प्रोफाइल" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "ओपनवीपीएन सर्वर सक्षम करें" @@ -3863,7 +3959,7 @@ msgstr "" "अपने पेजकईटसर्वर चूनें. \"pagekite.net\" सेट करें डिफ़ॉल्ट pagekite.net सर्वर उपयोग करने " "के लिए." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "सर्वर पोर्ट" @@ -4129,11 +4225,11 @@ msgstr "अब शट डाउन करें" msgid "Privoxy" msgstr "प्रिवोक्सी" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "वेब प्रॉक्सी" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4143,7 +4239,7 @@ msgstr "" "लिए, वेब पेज डेटा और HTTP हेडर को मोडिफाई करने के लिए, ऐकसेस को नियंत्रित करने के लिए " "और एड या दुसरा इंटरनेट का जंक हटाने के लिए. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4157,7 +4253,7 @@ msgstr "" "कॉन्फ़िगरेशन विवरण और प्रलेखन यहां देख सकते हैं http://config.privoxy.org/ या http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "{url} ऐकसेस करें प्रॉक्सी लेकर {proxy} टीसीपी पर{kind}" @@ -4166,11 +4262,11 @@ msgstr "{url} ऐकसेस करें प्रॉक्सी लेकर msgid "Quassel" msgstr "क्वासेल" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "आईआरसी क्लाइंट" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4186,7 +4282,7 @@ msgstr "" "ताकि आप हमेशा ऑनलाइन रखते हुए और एक या अधिक क्वासेल क्लाइंट डेस्कटॉप या मोबाइल से इसेसे " "कनेक्ट और डिस्कनेक्ट करने के लिए उपयोग किया जा सकता है." -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your समर्थित क्लाइंट एप्लिकेशन कि जरुरत है. राडिकैल किसी {box_name} " "यूसर पहुंचा जा सकता है एक लॉगिन के साथ." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4319,7 +4415,7 @@ msgstr "" "(जैसे http://localhost:5232) और अपने यूसरनाम दर्ज करें. खोज बटन पर क्लिक करने से मौजूदा " "कैलेंडर और पता पुस्तिकाएं सूचीबद्ध होंगी." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "ऐकसेस अधिकार कॉंफ़िगरेशन अपडेट किया गया" @@ -4434,11 +4530,11 @@ msgstr "" msgid "Roundcube" msgstr "राउंडक्यूब" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "ईमेल क्लाइंट" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4449,7 +4545,7 @@ msgstr "" "साथ. यह पूरा कार्यक्षमता देता है, सहित MIME समर्थन, पता पुस्तिका, फ़ोल्डर हेरफेर, संदेश " "खोज और स्पेल जाँच." -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -4471,7 +4567,7 @@ msgstr "" "SSL पर IMAP के लिए (अनुशंसित), imaps://imap.example.com जैसे सर्वर " "फ़ील्ड भरें." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4490,13 +4586,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4504,7 +4600,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4557,25 +4653,25 @@ msgstr "शेयर जोड़ा गया." msgid "Action" msgstr "एक्सआयन" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "शेयर हटाया गया." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "शेयर संपादित किया गया." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -4585,11 +4681,11 @@ msgstr "एेरर इजेक्टिग्न डिवाइस: {error_m msgid "Searx" msgstr "सिरएक्स" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "वेब खोज" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4597,7 +4693,7 @@ msgstr "" "सिरएक्स एक गोपनीयता संमान इंटरनेट मेटा खोज इंजन है. यह विभिन्न खोज यन्त्र से परिणाम " "इकट्ठा और प्रदर्शन करता है." -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4605,7 +4701,7 @@ msgstr "" "सिरएक्स खोज इंजन द्वारा ट्रैकिंग और प्रोफाइलिंग से बचने के लिए इस्तेमाल किया जा सकता है. " "यह डिफ़ॉल्ट से कोई कुकीज़ स्टोर नहीं करता है." -#: plinth/modules/searx/__init__.py:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "वेब सरच किजिये" @@ -4637,16 +4733,16 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "कॉन्फ़िगरेशन अपडेट किया." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "कंसोल लॉगिन प्रतिबंधित करें (संस्तुत)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4655,11 +4751,11 @@ msgstr "" "जब इस विकल्प सक्षम होता है, सिर्फ \"आडमिन\" समूह में यूसरस को कंसोल या SSH से लॉग इन " "करना हो जाएगा. कंसोल यूसरस आगे प्राधिकरण के बिना कुछ सर्विसस उपयोग हो सकता है." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "फेल-तो-बान (संस्तुत)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4676,7 +4772,7 @@ msgid "Show security report" msgstr "सुरक्षा" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4709,12 +4805,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "त्रुटि सेटिंग एक्सेस प्रतिबंधित: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "सुरक्षा कॉंफ़िगरेशन अपडेट किया गया" @@ -4750,11 +4846,11 @@ msgstr "" msgid "Shadowsocks" msgstr "शाडोसोक्स" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "सोक्स5 प्रॉक्सी" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4763,7 +4859,7 @@ msgstr "" "शैडोवॉक्स एक हल्के और सुरक्षित सॉक्स 5 प्रॉक्सी है, आपके इंटरनेट यातायात रक्षा करने के लिये. " "यह इंटरनेट फ़िल्टरिंग और सेंसरशिप बाईपास करने के लिए इस्तेमाल किया जा सकता है." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4775,7 +4871,7 @@ msgstr "" "है. यह एक सॉक्स 5 प्रॉक्सी भी चला जाएगा. स्थानीय डिवाइसस इस प्रॉक्सी से कनेक्ट कर सकते " "हैं, और उनके डेटा एंक्रिप्टेड और शैडोवॉक्स सर्वर के माध्यम से प्रॉक्सी हो जाएगा." -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4788,24 +4884,24 @@ msgstr "" msgid "Recommended" msgstr "अनुशंसित" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "सर्वर" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "सर्वर होस्ट नाम या IP एड्रेस" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "सर्वर पोर्ट नंबर" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "डेटा एंक्रिप्ट करने के लिए पासवर्ड उपयोग किया गया . सर्वर पासवर्ड से मेल खाना चाहिए." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "एंक्रिप्शन मेथोड. सर्वर सेटिंग पर मेल खाना चाहिए." @@ -4876,48 +4972,48 @@ msgstr "इस नाम का एक शयर पहले से मौज msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "शेयर जोड़ें" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "वर्तमान में कोई शेयर कॉन्फ़िगर नहीं किया गया है." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "डिस्क पाथ" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "शेयरड अोवर" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "समूहों के साथ" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "शेयर जोड़ा गया." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "शेयर जोड़ें" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "शेयर संपादित किया गया." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "शेयर संपादित करें" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "शेयर हटाया गया." @@ -4985,43 +5081,43 @@ msgstr "सॉफ़्टवेयर इंस्टालेशन स्न msgid "Enable or disable snapshots before and after software installation" msgstr "सॉफ़्टवेयर इंस्टालेशन से पहले और के बाद स्नैपशॉटस सक्षम या अक्षम करें" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "घंटेवार स्नैपशॉटस सीमा" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "अधिकतम कई घंटेवगर स्नैपशॉटस रखें." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "दैनिक स्नैपशॉट्स सीमा" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "इनमें से कई दैनिक स्नैपशॉट रखें." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "साप्ताहिक स्नैपशॉट्स सीमा" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "इनमें से कई साप्ताहिक स्नैपशॉट रखें." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "मासिक स्नैपशॉट्स सीमा" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "यह कई अधिकतम मासिक स्नैपशॉट रखें." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "वार्षिक स्नैपशॉट्स सीमा" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 #, fuzzy #| msgid "" #| "Keep a maximum of this many yearly snapshots. The default is 0 (disabled)." @@ -5102,11 +5198,11 @@ msgstr "स्नैपशॉटस प्रबंधित करें" msgid "Created snapshot." msgstr "स्नैपशॉट बनाया गया है." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "स्टोरेज स्नैपशॉट कॉंफ़िगरेशन अपडेट किया गया" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "क्रिया त्रुटि: {0} [{1}] [{2}]" @@ -5218,83 +5314,129 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} बाइट्स" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} किब" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} मेब" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} जिब" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} टीब" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "ऑपरेशन अनुत्तीर्ण हो गया." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "ऑपरेशन रद्द किया गया." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "यह डिवाइस पहले से अनमाउट किया जा रहा है." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "यह ऑपरेशन अनुपलब्ध है क्यैकि ड्राइवर/उपकरण टूल समर्थित नहीं है." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "ऑपरेशन टाइम आउट हो गया." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "व्यस्त डिवाइस को अनमाउंट करने का प्रयास कर रहा है." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "ऑपरेशन पहले से रद्द किया गया." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "अनुरोधित ऑपरेशन करने के लिए अधिकृत नहीं है." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "यह डिवाइस पहले से माउंट किया गया." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "यह डिवाइस नहीं माउंट किया गया." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "अनुरोधित विकल्प का उपयोग करने की अनुमति नहीं है." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "अमान्य होस्टनाम" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "डायरेक्टरी डाउनलोड करें" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "डायरेक्टरी डाउनलोड करें" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "चाबी प्रकाशित करें" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" @@ -5369,11 +5511,11 @@ msgstr "एेरर इजेक्टिग्न डिवाइस: {error_m msgid "Syncthing" msgstr "सिंकतिन्ग" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "फ़ाइल सिंक्रनाइज़ेशन" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5384,7 +5526,7 @@ msgstr "" "सिंक्रनाइज़ करने के लिए एक एप्लिकेशन है. सिंकतिन्ग चलते हए डिवाइसस पर किसी एक डिवाइस में " "फ़ाइलों का निर्माण, संशोधन, या हटाना ऑटोमेटिक दोहरा किया गया." -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5400,7 +5542,7 @@ msgstr "" "सेट एक फ़ोल्डर्स का एक अलग सेट का उपयोग करके सिंक्रनाइज़ किया जा सकता है. {box_name} " "पर वेब इंटरफेस सिर्फ \"एडमिन\" समूह के यूसकस के लिए उपलब्ध है." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "सिंकतिन्ग एप्लिकेशन का प्रशासन करें" @@ -5408,11 +5550,11 @@ msgstr "सिंकतिन्ग एप्लिकेशन का प्र msgid "Tahoe-LAFS" msgstr "टाहो-एलएएफएस" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "फ़ाइल स्टोरेज वितरित" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5423,7 +5565,7 @@ msgstr "" "नेटवर्क पर फ़ाइलें स्टोर करने के लिये स्वतंत्र सुरक्षा का उपयोग करता है. अगर कुछ नोड्स विफल " "होगा, आपकी फ़ाइलें शेष नोड्स से पुनर्प्राप्त किया जा सकता है." -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5489,57 +5631,57 @@ msgstr "" "टो प्रोजेक्ट सिफारिश की है कि आप टो ब्राउज़र उपयोग करें." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "टोर हिडन सर्विस" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "टोर सोक्स प्रॉक्सी" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "टो ब्रिज रीले" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "टोर रीले पोर्ट उपलब्ध है" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "यूआरएल एक्सेस करें {url} टीसीपी पर {kind} टोर के माध्यम से" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "टोर उपयोग की पुष्टि करें {url} पर टीसीपी पर {kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "इस फार्मेट उपयोग कर एक वैध ब्रिज दर्ज करें: [transport] IP:ORPort [fingerprint]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "टोर सक्षम करें" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "अपस्ट्रीम ब्रिजस उपयोग करके टो नेटवर्क से कनेक्ट करें" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5549,11 +5691,11 @@ msgstr "" "करेगा. अगर आपका इंटरनेट सर्विस प्रदाता (ISP) टोर नेटवर्क से कनेक्शन सेंसर या ब्लॉक करता है " "इस विकल्प का उपयोग करें. यह रिले मोड को अक्षम कर देगा." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "अपस्ट्रीम ब्रिजस" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5563,11 +5705,11 @@ msgstr "" "\">https://bridges.torproject.org/ और ब्रिज जानकारी यहाॅं से कॉपी/पेस्ट कर सकते " "हैं. वर्तमान में समर्थित ट्रांसपोर्ट्स कोई नहीं, obfs3, obfs4 और scamblesuit हैं." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "टोर रीले सक्षम करें" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5578,11 +5720,11 @@ msgstr "" "अगर आपके पास दो से अधिक मेगाबिट से अपलोड \n" "आैर डाउनलोड बैंडविड्थ है यह करें." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "टोर ब्रिज रीले सक्षम करें" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5592,31 +5734,31 @@ msgstr "" "और इस नोड सेंसर करने के लिए और मुश्किल होगा. यह दूसरों को सेंसरशिप से टाल करने के लिये मदद " "करता है." -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "टोर हिडन सर्विस सक्षम करें" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" "हिडन सर्विस {box_name} को इसके स्थान को प्रकट किए बिना चयनित सर्विसस प्रदान करने की " "अनुमति देगी. स्ट्रॉन्ग गुमनामी के लिए इससे अभी न करें." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "टो पर सॉफ्टवेयर पैकेजस डाउनलोड करें" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5625,7 +5767,7 @@ msgstr "" "सक्षम होने पर सॉफ्टवेयर इंस्टालेशन और अपग्रेड के लिए टो नेटवर्क पर डाउनलोड किया जाएगा. " "यह सॉफ़्टवेयर डाउनलोड के दौरान एकांत और सुरक्षा जोड़ता है." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "अपस्ट्रीम ब्रिजस उपयोग करने के लिए एक अपस्ट्रीम ब्रिजस निर्दिष्ट करें." @@ -5678,7 +5820,7 @@ msgstr "एक टोर सॉक्स पोर्ट आपका %(box_name msgid "Transmission" msgstr "हस्तांतरण" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5686,28 +5828,19 @@ msgstr "" "बिटटोरेंट एक पीअर-टू-पीअर फ़ाइल साझा प्रोटोकॉल है. ट्रांसमिशन डेमॉन बिटटोरेंट फ़ाइल साझा " "संभालती है. नोट-बिटटोरेंट अनाम नहीं है." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "डायरेक्टरी डाउनलोड करें" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"जहां डाउनलोडस सहेजे जाते हैं, यह डायरेक्टरी है. अगर आप डिफ़ॉल्ट डायरेक्टरी बदलते हैं, " -"सुनिश्चित करें कि नया डायरेक्टरी मौजूद है और \"डेबियन-हस्तांतरण\" यूसर से लिखा गया था." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "टिनी टिनी आरएसएस" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "समाचार फ़ीड रीडर" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5717,7 +5850,7 @@ msgstr "" "से समाचार पढ़ने की अनुमति देने के लिए डिज़ाइन किया गया है, एक असली डेस्कटॉप एप्लिकेशन के " "जैसे." -#: plinth/modules/ttrss/__init__.py:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5731,7 +5864,7 @@ msgstr "" "माैजूद होते है. यह किसी एक {box_name} के सात लॉग इन " "कर सकता है." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -5744,7 +5877,7 @@ msgstr "" "टैनी टैनी आरएसएस का मोबाइल या डेस्कटॉप एप्लिकेशन उपयोग करते समय, यह यूआरएल/tt-rss-app कनेक्ट करने के लिए उपयोग करें." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "समाचार फ़ीड्स पढ़ें और सब्सक्राइब करें" @@ -5752,7 +5885,7 @@ msgstr "समाचार फ़ीड्स पढ़ें और सब् msgid "Tiny Tiny RSS (Fork)" msgstr "टैनी टैनी आरएसएस (फोर्क)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "अपडेट" @@ -5833,18 +5966,18 @@ msgstr "अपग्रेड प्रक्रिया शुरू हुई msgid "Starting upgrade failed." msgstr "अपग्रेड प्रारंभ करना विफल रहा." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "यूसरस और समूह" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5852,7 +5985,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "एलडीएपी प्रविष्टि चेक करें \"{search_item}\"" @@ -5861,15 +5994,15 @@ msgstr "एलडीएपी प्रविष्टि चेक करें msgid "Access to all services and system settings" msgstr "सब सर्विसस और सिस्टम सेटिंग्स तक पहुंच" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "यूसरनाम लिया है या आरक्षित है." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "अनुमतियाँ" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5882,20 +6015,20 @@ msgstr "" "

एडमिन ग्रुप के यूसरस सब सर्विसस पर लॉग इन कर सकेगें. SSH के माध्यम से भी " "सिस्टम पर लॉग इन कर सकते है अाैर उनको प्रशासनिक विशेषाधिकार (sudo) है." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "एलडीएपी यूसर बनाना विफल रहा." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "{group} समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -5905,39 +6038,39 @@ msgstr "" "बिना सिस्टम में प्रवेश करने की अनुमति देगा. आप एकाधिक कीज़ दर्ज कर सकते हैं, हर लाइन रक " "एक. खाली लाइनस या # से प्रारंभ होने वाले लाइनस अनदेखा कर दिया जाएगा." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "एलडीएपी यूसर का नाम बदलना विफल रहा." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "समूह से यूसर को हटाने में विफल." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "समूह से यूसर को जोड़ने में विफल." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "एसएसएच कीज़ सेट करने में असमर्थ." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "सिस्टम में केवल व्यवस्थापक को नहीं हटा सकता." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "एलडीएपी यूसर का पासवर्ड बदलना विफल रहा." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "व्यवस्थापक समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "कंसोल एक्सेस प्रतिबंधित करने में विफल." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "युसर अकाउंट बनाया, अब आप लॉगड इन हैं" @@ -5953,12 +6086,12 @@ msgstr "पासवर्ड सहेजें" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "यूसर बनाये" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "यूसर हटाइये" @@ -5991,7 +6124,7 @@ msgid "Create Account" msgstr "अकाउंट बनाएँ" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "यूसरस" @@ -6019,62 +6152,62 @@ msgstr "" msgid "Save Changes" msgstr "बदलाव संचयित कीजिये" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "युसर %(username)s बनाया." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "युसर %(username)s अपडेट किया." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "यूसर संपादित करें" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "यूसर {user} हटाया." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "एलडीएपी यूसरको हटाने में असफल रहा." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "पासवर्ड बदलिये" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "पासवर्ड सफलतापूर्वक बदल गया." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "पीपीपीअोइ" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "जेनेरिक" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "इंस्टालेशन करते समय पर त्रुटि" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "इंस्टॉलिंग" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "डाउनलोडिंग" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "मीडिया बदलाव" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "कॉंफ़िगरेशन फ़ाइल: {file}" @@ -6125,12 +6258,12 @@ msgstr "" "तो हम इसे ठीक कर सकते हैं. साथ ही, बग रिपोर्ट में " "स्टेटस लॉग संलग्न करें." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "सर्विस %(service_name)s चल रहा है." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "सर्विस %(service_name)s नहीं चल रहा है." @@ -6243,6 +6376,10 @@ msgstr "" "%(box_name)s इंस्टालेशन खत्म करने के लिए प्रतीक्षा करें. इसके बाद %(box_name)s का उपयोग " "कर सकतें हैं." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "इंस्टालेशन" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6328,47 +6465,43 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "इंस्टालेशन" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "यह एप्लिकेशन इंस्टॉल करें?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "इस ऐप्लिकेशन को अप्डेट चाहिये. अभी अप्डेट करें?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" "किसी इंस्टालेशन या अपग्रेड पहले से चल रहा है. कुछ समय प्रतीक्षा करें फिर कोशिश करने से पहले." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "यह एप्लिकेशन अभी अापका वितरण में उपलब्ध नहीं है." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "इंस्टॉल करें" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "प्री-इंस्टॉलेशन ऑपरेशन कर रहा है" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "पोस्ट-इंस्टॉलेशन ऑपरेशन कर रहा है" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "%(package_names)s:%(status)s इंस्टॉलेशन किया" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% पूर्ण" @@ -6381,18 +6514,26 @@ msgstr "वेब क्लाइंट लॉंच" msgid "Client Apps" msgstr "क्लाइंट ऐप्स" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "एप्लीकेशन सक्षम किया गया है" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "एप्लीकेशन अक्षम किया गया है" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "जहां डाउनलोडस सहेजे जाते हैं, यह डायरेक्टरी है. अगर आप डिफ़ॉल्ट डायरेक्टरी बदलते हैं, " +#~ "सुनिश्चित करें कि नया डायरेक्टरी मौजूद है और \"डेबियन-हस्तांतरण\" यूसर से लिखा गया था." + #~ msgid "OpenVPN server is running" #~ msgstr "ओपनवीपीएन सर्वर चल रहा है" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index f71c04fe8..88936b49d 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-11-06 06:04+0000\n" "Last-Translator: Doma Gergő \n" "Language-Team: Hungarian /" @@ -674,11 +674,33 @@ msgstr "" "bármely adminisztrátori csoportba tartozó felhasználója." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Hozzáférési pont" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Általános beállítások" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -686,13 +708,13 @@ msgstr "Általános beállítások" msgid "Configure" msgstr "Beállítások" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Domain név" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Érvénytelen domain név" @@ -721,11 +743,11 @@ msgstr "" "végződnie, továbbá csak betűket, számokat és kötőjeleket tartalmazhat. " "Teljes hossza nem lehet több 63 karakternél." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Érvénytelen állomásnév" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -742,11 +764,11 @@ msgstr "" "Minden egyes címkének a hossza nem lehet több 63 karakternél. A domain név " "teljes hossza nem lehet több 253 karakternél." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Webkiszolgáló kezdőoldala" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -763,51 +785,51 @@ msgstr "" "felhasználóknak külön meg kell adniuk a /plinth vagy a /freedombox elérési " "utat." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók mutatása" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "Több műszaki ismeretet igénylő alkalmazások és funkciók megjelenítése." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Hiba az állomásnév beállítása közben: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Állomásnév beállítva" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Hiba a domain név beállítása közben: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Domain név beállítva" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Hiba a webkiszolgáló kezdőoldalának beállítása közben: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Webkiszolgáló kezdőoldal beállítva" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Hiba a haladó módba váltás során: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók megjelenítése" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók elrejtése" @@ -815,7 +837,7 @@ msgstr "Haladó szintű alkalmazások és funkciók elrejtése" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Fájlmegosztás" @@ -929,16 +951,16 @@ msgstr "Időzóna beállítva" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "Webes BitTorrent kliens" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 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:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /deluge útvonalán. 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:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Fájlok letöltése BitTorrent alkalmazások használatával" @@ -975,7 +997,7 @@ msgstr "" "annak megerősítésére, hogy az alkalmazások és a szolgáltatások az elvárt " "módon működnek." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Ellenőrző tesz" @@ -1073,18 +1095,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Beállítások frissítése" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "A beállítás változatlan" @@ -1135,7 +1157,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Dinamikus Domain név" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1145,7 +1167,7 @@ msgstr "" "használhatók az URL-ben. Részletekért tekintsd meg a példa szolgáltatók " "frissítési URL sablonjait." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1155,7 +1177,7 @@ msgstr "" "protokollt. Ha nem támogatja a GnuDIP-et, vagy nem található a listán, akkor " "használhatod a szolgáltató frissítési URL-jét." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1163,20 +1185,20 @@ msgstr "" "Kérlek ide ne írj be URL-t (mint pl. „https://example.com/”), csak a GnuDIP " "kiszolgáló állomásnevét (mint pl. „example.com”)." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "A nyilvános domain név, amellyel el szeretnéd érni a te {box_name} " "eszközödet." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Használd ezt az opciót, ha a szolgáltatód saját aláírású (self signed) " "tanúsítványokat használ." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1184,12 +1206,12 @@ msgstr "" "Ha ez az opció ki van választva, a te felhasználóneved és jelszavad lesz " "használva HTTP alap hitelesítéshez." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" "Hagyd ezt a mezőt üresen, ha szeretnéd megtartani a jelenlegi jelszavad." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1203,68 +1225,68 @@ msgstr "" "egyszerűen visszaadja a kliens IP címét (például: http://myip.datasystems24." "de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "A felhasználónév, amely a fiók létrehozása során lett megadva." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Dynamic DNS engedélyezése" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Szolgáltatás típusa" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "GnuDIP kiszolgáló címe" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Érvénytelen kiszolgálónév" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "Frissítési URL" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Minden SSL tanúsítvány elfogadása" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "HTTP alap hitelesítés használata" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Felhasználónév" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Jelszó" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Jelszó mutatása" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "URL a nyilvános IP cím felderítéséhez" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Kérlek adj meg egy frissítési URL-t vagy egy GnuDIP kiszolgáló címet" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Kérlek add meg a GnuDIP felhasználónevet" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Kérlek add meg a GnuDIP domain nevet" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Kérlek add meg a jelszót" @@ -1342,7 +1364,7 @@ msgstr "Legutolsó frissítés" msgid "About" msgstr "Leírás" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1350,15 +1372,15 @@ msgstr "Leírás" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Állapot" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Dynamic DNS beállítása" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Dynamic DNS állapot" @@ -1366,12 +1388,12 @@ msgstr "Dynamic DNS állapot" msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Chat szerver" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1379,7 +1401,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1662,7 +1684,7 @@ msgstr "Tároló leírása" msgid "Optional, for displaying on Gitweb." msgstr "Opcionális, a Gitweb-en történő megjelenítéshez." -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Tároló tulajdonosának a neve" @@ -1735,35 +1757,35 @@ msgstr "Véglegesen törlöd ezt a tárolót?" msgid "Delete %(name)s" msgstr "%(name)s törlése" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Tároló létrehozva." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Hiba történt a beállítás közben." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Tároló szerkesztve." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Tároló szerkesztése" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Hiba történt a beállítás közben." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} törölve." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} nem törölhető: {error}" @@ -1772,8 +1794,8 @@ msgstr "{name} nem törölhető: {error}" msgid "Documentation" msgstr "Dokumentáció" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Kézikönyv" @@ -1938,7 +1960,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Bővebben..." @@ -2073,11 +2095,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Anonim hálózat" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2089,7 +2111,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:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." @@ -2097,7 +2119,7 @@ msgstr "" "További információt találhat az I2P-ről a projekt weboldalán." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2105,11 +2127,11 @@ msgstr "" "Az első látogatás a megadott webes felületen elindítja a konfigurálási " "folyamatot." -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "I2P alkalmazás kezelése" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -2124,7 +2146,7 @@ msgstr "Indítás" msgid "Proxies" msgstr "Proxyk" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Anonim torrentek" @@ -2168,11 +2190,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki és blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2191,7 +2213,7 @@ msgstr "" "engedélyezett, a blogok és wikik itt lesznek elérhetők: /ikiwiki (ha már létre lett hozva)." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2205,22 +2227,22 @@ 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:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Wiki alkalmazások megtekintése és szerkesztése" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Típus" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Adminisztrátori fiók neve" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Adminisztrátori fiók jelszava" @@ -2261,33 +2283,33 @@ msgstr "" "Ez a művelet el fog távolítani minden bejegyzést, oldalt és kommentet " "beleértve a verziótörténetet is. Véglegesen törlöd ezt a wiki-t vagy blogot?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "{name} wiki létrehozva." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Nem tudtam létrehozni a wiki-t: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "{name} blog létrehozva." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Nem tudtam létrehozni a blog-ot: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} törölve." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2297,16 +2319,16 @@ msgstr "{name} nem törölhető: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby kiszolgáló" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2339,11 +2361,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Chat kliens" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2463,7 +2485,7 @@ msgstr "" "Nincsenek domain-ek beállítva. Előbb állítsd be a " "domain-eket ahhoz, hogy tanúsítványokat kaphass azokhoz." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2472,29 +2494,29 @@ msgstr "" "A {domain} domain tanúsítványa sikeresen visszavonva. Eltarthat néhány " "pillanatig, mire életbe lép." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "A {domain} domain tanúsítványát nem sikerült visszavonni: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "A {domain} domain sikeresen megkapta a tanúsítványt" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "A {domain} domain nem kapott tanúsítványt: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "{domain} domain-on a tanúsítvány sikeresen törölve" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format 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}" @@ -2503,7 +2525,7 @@ msgstr "{domain} domain-on nem sikerült kitörölni a tanúsítványt: {error}" msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2521,7 +2543,7 @@ msgstr "" "beszélgetni az összes többi Matrix kiszolgáló felhasználóival a szövetségen " "keresztül." -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @felhasznalonev:domainnev." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2573,7 +2595,7 @@ msgstr "" " beállítás után jelenleg nem támogatott.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2621,11 +2643,11 @@ msgstr "" " Encrypt weboldalát ahhoz, hogy beszerezz egyet.\n" " " -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Szabad regisztráció engedélyezve" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Szabad regisztráció letiltva" @@ -2634,11 +2656,11 @@ msgstr "Szabad regisztráció letiltva" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2651,7 +2673,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:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2665,7 +2687,7 @@ msgstr "" "további felhasználói fiókokat a MediaWiki Special:CreateAccount oldalán." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2710,23 +2732,23 @@ msgstr "" "rendelkező emberek fogják tudni olvasni/írni a wiki-t. A szabad regisztráció " "is le lesz tiltva." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Jelszó frissítve" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Szabad regisztráció engedélyezve" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Szabad regisztráció letiltva" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Privát mód engedélyezve" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Privát mód letiltva" @@ -2735,11 +2757,11 @@ msgstr "Privát mód letiltva" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Blokk sandbox" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2795,7 +2817,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Ha le van tiltva, a játékosok nem fognak meghalni ill. megsérülni." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Cím" @@ -2804,32 +2826,87 @@ msgstr "Cím" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Maximális játékosszám beállítás frissítve" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Kreatív mód beállítás frissítve" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "PVP beállítás frissítve" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Sérülés beállítás frissítve" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "P2P Fájlmegosztás" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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 " @@ -2839,7 +2916,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:48 +#: plinth/modules/mldonkey/__init__.py:50 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 " @@ -2850,7 +2927,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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -2858,7 +2935,7 @@ 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:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Fájlok letöltése eDonkey alkalmazások használatával" @@ -3040,15 +3117,15 @@ 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:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Audiókonferencia" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3056,7 +3133,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:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3066,6 +3143,18 @@ msgstr "" "kapcsolódhatsz. Mumble kliensek " "elérhetőek az asztali és Android eszközökhöz." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "SSH kiszolgáló jelszava" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3074,6 +3163,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "A jelszó módosítása sikeres." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Névszolgáltatások" @@ -3131,23 +3226,23 @@ msgstr "DNSSEC használata IPv{kind} felett" msgid "Connection Type" msgstr "Kapcsolat típusa" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Kapcsolat neve" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Fizikai interfész" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "A hálózati eszköz, amihez ez a kapcsolat kötve lesz." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Tűzfal zóna" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3155,21 +3250,21 @@ msgstr "" "A tűzfal zóna szabályozza, hogy mely szolgáltatások lesznek elérhetők ezen " "az interfészen. Csak a megbízható hálózatokhoz válaszd a „Belső”-t." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Külső" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Belső" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPv4 címzési módszer" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3181,19 +3276,19 @@ msgstr "" "módszertől a {box_name} eszközöd úgy fog viselkedni, mint egy router, " "beállítja a klienseket ezen a hálózaton és megosztja az internet kapcsolatát." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automatikus (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Megosztott" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Hálózati maszk" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3201,21 +3296,21 @@ msgstr "" "Opcionális. Ha üresen hagyod, a címen alapuló alapértelmezett hálózati maszk " "lesz használva." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Átjáró" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Opcionális." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS-kiszolgáló" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3224,11 +3319,11 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Másodlagos DNS-kiszolgáló" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3237,11 +3332,11 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "IPv6 címzési módszer" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3250,27 +3345,27 @@ msgstr "" "Az „Automatikus” módszer esetén a {box_name} eszköz ügyfél lesz, amely során " "a beállításokat a csatlakoztatott hálózatról kéri le." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automatikus" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automatikus, csak DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Kihagyás" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Előtag" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Értéke 1 és 128 között." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3279,7 +3374,7 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3288,54 +3383,54 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- válassz --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "A név, amellyel a hálózat látható." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Mód" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastuktúra" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Hozzáférési pont" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Frekvenciasáv" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Csatorna" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3344,11 +3439,11 @@ msgstr "" "korlátozódik a működés. Üresen hagyva vagy 0 értéket megadva automatikus " "választást jelent." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3358,11 +3453,11 @@ msgstr "" "ponthoz kapcsolódsz, csak akkor kapcsolódj ha a hozzáférési pont BSSID-je " "megegyezik az itt megadottal. Például: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Hitelesítési mód" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3370,11 +3465,11 @@ msgstr "" "Válaszd a WPA-t ha a vezeték nélküli hálózatod biztonságos és az ügyfelektől " "jelszót kér a csatlakozáshoz." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Nyílt" @@ -3583,7 +3678,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Módszer" @@ -3599,6 +3694,7 @@ msgstr "DNS szerver" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Alapértelmezett" @@ -3611,7 +3707,7 @@ msgid "This connection is not active." msgstr "Ez a kapcsolat nem aktív." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Biztonság" @@ -3675,13 +3771,13 @@ msgstr "Térköz" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3726,11 +3822,11 @@ msgstr "Létrehoz..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Virtuális magánhálózat" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3748,14 +3844,14 @@ msgstr "" "eszközödön keresztül az Internetet is további biztonság és anonimitás " "érdekében." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "Profil letöltése" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "OpenVPN kiszolgáló engedélyezése" @@ -3928,7 +4024,7 @@ msgstr "" "Válaszd ki a pagekite kiszolgálódat. Állítsd „pagekite.net” -re, ha az " "alapértelmezett pagekite.net kiszolgálót szeretnéd használni." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Kiszolgáló port" @@ -4198,11 +4294,11 @@ msgstr "Leállítás most" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Web proxy" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4213,7 +4309,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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4228,7 +4324,7 @@ msgstr "" "a címeken: http://config.privoxy.org/ és http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4238,11 +4334,11 @@ msgstr "" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "IRC kliens" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4259,7 +4355,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:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your támogatott kliens 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:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4390,7 +4486,7 @@ msgstr "" "és a felhasználónevet. A keresés gombra kattintva ki lesz listázva az összes " "elérhető naptár és címjegyzék." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Hozzáférési jogok beállításai frissítve" @@ -4514,11 +4610,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "E-mail kliens" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4530,7 +4626,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:45 +#: plinth/modules/roundcube/__init__.py:47 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -4552,7 +4648,7 @@ msgstr "" "example.com
. Az SSL-en kersztüli IMAP-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:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4572,13 +4668,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4586,7 +4682,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4641,25 +4737,25 @@ msgstr "Megosztás hozzáadva." msgid "Action" msgstr "Műveletek" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Megosztás törölve." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Hiba történt az eszköz kiadása során: {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Megosztás szerkesztve." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -4669,11 +4765,11 @@ msgstr "Hiba történt az eszköz kiadása során: {error_message}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Webes keresés" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4681,7 +4777,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:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4689,7 +4785,7 @@ 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Keresés a weben" @@ -4724,16 +4820,16 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Engedélyezi ennek az alkalmazásnak a használatát bárkinek, aki el tudja érni." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Beállítások frissítve." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Konzolon keresztüli bejelentkezések korlátozása (ajánlott)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4743,11 +4839,11 @@ msgstr "" "bejelentkezni helyi konzolról vagy SSH-n keresztül. Konzolos felhasználók " "hozzáférhetnek bizonyos szolgáltatásokhoz további engedélyek nélkül is." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2Ban (ajánlott)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4765,7 +4861,7 @@ msgid "Show security report" msgstr "Biztonsági rések megjelenítése" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security Notice" msgid "Security Report" @@ -4808,12 +4904,12 @@ msgstr "Biztonsági rések megjelenítése" msgid "Past Vulnerabilities" msgstr "Biztonsági rések megjelenítése" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Hiba a korlátozott hozzáférés beállítása során: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Biztonsági beállítás frissítve" @@ -4849,11 +4945,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Socks5 Proxy" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4863,7 +4959,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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4876,7 +4972,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:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4890,25 +4986,25 @@ msgstr "" msgid "Recommended" msgstr "Ajánlott" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Kiszolgáló" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Kiszolgáló állomásneve vagy IP-címe" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Kiszolgáló portja" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "Az adattitkosításra használt jelszó. A kiszolgáló jelszavával meg kell hogy " "egyezzen." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" "Titkosítási módszer. A kiszolgáló beállításával meg kell hogy egyezzen." @@ -4979,48 +5075,48 @@ msgstr "" "A megosztásnak nyilvánosnak vagy legalább egy csoporttal megosztottnak kell " "lennie" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Megosztás hozzáadása" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Jelenleg nincs beállított megosztás." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Lemez elérési útja" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Megosztva ezen keresztül" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "Ezekkel a csoportokkal" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "nyilvános hozzáférés" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Megosztás hozzáadva." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Megosztás hozzáadása" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Megosztás szerkesztve." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Megosztás szerkesztése" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Megosztás törölve." @@ -5097,43 +5193,43 @@ msgstr "" "Pillanatképek készítésének engedélyezése vagy letiltása szoftver telepítése " "előtt és után" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Óránkénti pillanatképek korlátja" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Legfeljebb ennyi óránkénti pillanatkép legyen megtartva." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Napi pillanatképek korlátja" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Legfeljebb ennyi napi pillanatkép legyen megtartva." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Heti pillanatképek korlátja" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Legfeljebb ennyi heti pillanatkép legyen megtartva." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Havi pillanatképek korlátja" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Legfeljebb ennyi havi pillanatkép legyen megtartva." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Évenkénti pillanatképek korlátja" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5217,11 +5313,11 @@ msgstr "Pillanatképek kezelése" msgid "Created snapshot." msgstr "Pillanatkép létrehozva." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Tárolási pillanatképek konfigurációja frissítve" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Hiba a művelet közben: {0} [{1}] [{2}]" @@ -5337,86 +5433,132 @@ msgstr "" "fel- és lecsatolhatsz cserélhető adathordozókat, kibővítheted a root " "partíciót, stb." -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "A művelet sikertelen." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "A művelet meg lett szakítva." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 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:244 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:247 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:249 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:252 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:254 msgid "The operation has already been cancelled." msgstr "A művelet már meg lett szakítva." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 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:262 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:264 msgid "The device is not mounted." msgstr "Az eszköz nincs felcsatolva." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "Nem használhatja a kért lehetőséget." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "Az eszközt egy másik felhasználó felcsatolva." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid repository name." +msgid "Invalid directory name." +msgstr "Érvénytelen tárolónév." + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Letöltési könyvtár" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "Az eszközt egy másik felhasználó felcsatolva." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Letöltési könyvtár" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Public share" +msgid "Samba share" +msgstr "Nyilvános megosztás" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "A következő tárolóeszközök vannak használatban:" @@ -5490,11 +5632,11 @@ msgstr "Hiba történt az eszköz kiadása során: {error_message}" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Fájlszinkronizáció" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5506,7 +5648,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:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5525,7 +5667,7 @@ msgstr "" "felület csak az \"admin\" csoporthoz tartozó felhasználók számára " "hozzáférhető." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "A Syncthing alkalmazás beállítása" @@ -5533,11 +5675,11 @@ msgstr "A Syncthing alkalmazás beállítása" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Elosztott fájltároló" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5549,7 +5691,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:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5618,58 +5760,58 @@ msgstr "" "torproject.org/download/download-easy.html.en\">Tor böngésző használatát " "javasolja." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor rejtett szolgáltatás" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Tor híd relay" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Tor relay port elérhető" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, 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" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "Adj meg egy érvényes hidat ezzel a formátummal: [átvitel_neve] IP_cím:Port " "[ujjlenyomat]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Tor engedélyezése" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Használj felmenő hidakat a Tor hálózatra kapcsolódáshoz" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5680,11 +5822,11 @@ msgstr "" "internetszolgáltatód blokkolja vagy cenzúrázza a Tor hálózati kapcsolatokat. " "Ez le fogja tiltani a relay módokat." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Felmenő hidak" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5695,11 +5837,11 @@ msgstr "" "információit ide. A jelenleg támogatott átvitelek: none (nincs), obfs3, " "obfs4 és scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Tor relay engedélyezése" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5710,11 +5852,11 @@ msgstr "" "sávszélességet fog a Tor hálózathoz hozzáadni. Tedd ezt ha legalább 2 " "megabit/másodperc feltöltési és letöltési sávszélességgel rendelkezel." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Tor híd relay engedélyezése" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5724,20 +5866,20 @@ msgstr "" "nyilvános Tor relay adatbázis helyett, így téve nehezebbé ezen csomópont " "cenzúrázását. Ez segít másoknak a cenzúra megkerülésében." -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Tor rejtett szolgáltatás engedélyezése" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5745,11 +5887,11 @@ msgstr "" "kiválasztott szolgáltatásokat nyújthasson (pl. wiki vagy chat) anélkül, hogy " "felfedné a helyét. Ezt még ne használd erős anonimitás eléréséhez." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "A szoftvercsomagok Tor-on keresztüli letöltése" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5759,7 +5901,7 @@ msgstr "" "szoftver a Tor hálózaton keresztül töltődik le. Ez magasabb szintű " "biztonságot jelent szoftverek letöltésekor." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "Adj meg legalább egy felmenő hidat azok használatához." @@ -5814,7 +5956,7 @@ msgstr "" msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5823,29 +5965,19 @@ msgstr "" "kezeli a Bitorrent fájlmegosztást. Vedd figyelembe, hogy a BitTorrent nem " "biztosít névtelenséget." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Letöltési könyvtár" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Az a könyvtár, ahová a letöltések kerülnek. Ha módosítod az alapértelmezett " -"könyvtárat, akkor biztosítsd, hogy az új könyvtár létezik és írható a " -"„debian-transmission” felhasználó által." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Hírcsatorna-olvasó" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5855,7 +5987,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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5870,7 +6002,7 @@ msgstr "" "\"{users_url}\">bármely felhasználó számára {box_name} " "felhasználónévvel." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -5884,7 +6016,7 @@ msgstr "" "hez, használd a /tt-rss-app URL-t a " "csatlakozáshoz." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Hírcsatornákra való feliratkozás / olvasás" @@ -5892,7 +6024,7 @@ msgstr "Hírcsatornákra való feliratkozás / olvasás" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Frissítés" @@ -5964,18 +6096,18 @@ msgstr "A frissítési folyamat elkezdődött." msgid "Starting upgrade failed." msgstr "A frissítést nem sikerült elindítani." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Felhasználók és csoportok" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5983,7 +6115,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP bejegyzés ellenőrzése: \"{search_item}\"" @@ -5992,15 +6124,15 @@ msgstr "LDAP bejegyzés ellenőrzése: \"{search_item}\"" 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/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "A felhasználói név (már) foglalt." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Engedélyek" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6016,20 +6148,20 @@ msgstr "" "képesek bejelentkezni a rendszerbe, ahol adminisztrátori jogosultságokkal " "rendelkeznek (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "LDAP felhasználó létrehozása sikertelen." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Nem sikerült hozzáadni az új felhasználót ehhez a csoporthoz: {group}." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Engedélyezett SSH kulcsok" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6039,39 +6171,39 @@ msgstr "" "jelszó nélkül jelentkezzen be. Több kulcs is megadható; soronként egy. Az " "üres, illetve # jellel kezdődő sorok nem számítanak." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "LDAP felhasználó átnevezése sikertelen." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Nem sikerült eltávolítani a felhasználót a csoportból." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "SSH kulcsok beállítása sikertelen." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "Nem lehet törölni a rendszer egyetlen rendszergazdáját." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "LDAP felhasználó jelszavának megváltoztatása sikertelen." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Nem sikerült hozzáadni az új felhasználót a rendszergazda csoporthoz." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Nem sikerült a konzol hozzáférés korlátozása." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Felhasználói fiók létrehozva, bejelentkezés sikeres" @@ -6087,12 +6219,12 @@ msgstr "Jelszó mentése" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Felhasználó létrehozása" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Felhasználó törlése" @@ -6126,7 +6258,7 @@ msgid "Create Account" msgstr "Fiók létrehozása" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Felhasználók" @@ -6154,62 +6286,62 @@ msgstr "" msgid "Save Changes" msgstr "Változtatások mentése" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "%(username)s nevű felhasználó létrehozva." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "%(username)s nevű felhasználó frissítve." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Felhasználó szerkesztése" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "{user} nevű felhasználó törölve." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "LDAP felhasználó törlése sikertelen." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Jelszómódosítás" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "A jelszó módosítása sikeres." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Általános" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Hiba lépett fel a telepítés során" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "telepítés" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "letöltés" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "adathordozó csere" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurációs fájl: {file}" @@ -6260,12 +6392,12 @@ msgstr "" "javítani. Továbbá mellékeld a bejelentésben az állapotnapló tartalmát." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "A szolgáltatás fut (%(service_name)s)." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "A szolgáltatás nem fut (%(service_name)s)." @@ -6377,6 +6509,10 @@ msgstr "" "Várd meg, amíg a %(box_name)s végez a telepítéssel! Amint az befejeződött, a " "%(box_name)s használatba vehető." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Telepítés" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6473,19 +6609,15 @@ msgstr "" "kell állítanod a port továbbítást. A %(service_name)s szolgáltatáshoz a " "következő portokat kellene továbbítani:" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Telepítés" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Alkalmazás telepítése?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Az alkalmazást frissíteni szükséges. Indulhat a frissítés most?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6493,28 +6625,28 @@ msgstr "" "Egy másik telepítés vagy frissítés már fut. Pár perc után érdemes újra " "megpróbálni." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "Ez az alkalmazás jelenleg nem hozzáférhető ebben a disztribúcióban." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Telepítés" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Telepítés előtti műveletek végrehajtása" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Telepítés utáni műveletek végrehajtása" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "%(package_names)s telepítése: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "befejezettségi szint: %(percentage)s%%" @@ -6527,18 +6659,27 @@ msgstr "Webes kliens indítása" msgid "Client Apps" msgstr "Kliens alkalmazások" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Alkalmazás engedélyezve" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Alkalmazás letiltva" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Gudzsaráti" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Az a könyvtár, ahová a letöltések kerülnek. Ha módosítod az " +#~ "alapértelmezett könyvtárat, akkor biztosítsd, hogy az új könyvtár létezik " +#~ "és írható a „debian-transmission” felhasználó által." + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN kiszolgáló fut" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index 4093c6baa..b195e3593 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2018-11-02 00:44+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Indonesian any user on {box_name} " "belonging to the admin group." msgstr "" +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Access Point" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Konfigurasi Umum" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -675,13 +697,13 @@ msgstr "Konfigurasi Umum" msgid "Configure" msgstr "Konfigurasi" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -706,11 +728,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -721,13 +743,13 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 #, fuzzy #| msgid "Web Server (HTTP)" msgid "Webserver Home Page" msgstr "Server Web (HTTP)" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -737,53 +759,53 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Kesalahan pengaturan nama domain: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Kesalahan pengaturan nama domain: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Kesalahan pengaturan nama domain: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -791,7 +813,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -893,23 +915,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -927,7 +949,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -1015,18 +1037,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1065,46 +1087,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1113,68 +1135,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Aktifkan Dynamic DNS" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Tipe Layanan" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "Perbaharui URL" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Gunakan autentikasi dasar HTTP" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Nama Pengguna" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Kata Sandi" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Tampilkan kata sandi" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1233,7 +1255,7 @@ msgstr "" msgid "About" msgstr "Tentang" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1241,15 +1263,15 @@ msgstr "Tentang" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Status" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Status Dynamic DNS" @@ -1257,20 +1279,20 @@ msgstr "Status Dynamic DNS" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 #, fuzzy #| msgid "Web Server" msgid "Chat Server" msgstr "Server Web" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1515,7 +1537,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1598,35 +1620,35 @@ msgstr "" msgid "Delete %(name)s" msgstr "Hapus %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Actions" msgid "Edit repository" msgstr "Aksi" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} dihapus." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Tidak dapat menghapus {name}: {error}" @@ -1635,8 +1657,8 @@ msgstr "Tidak dapat menghapus {name}: {error}" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Panduan" @@ -1777,7 +1799,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 #, fuzzy #| msgid "Learn more »" msgid "Learn more..." @@ -1897,13 +1919,13 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 #, fuzzy #| msgid "Go to Networks" msgid "Anonymity Network" msgstr "Pergi ke Pengaturan Jaringan" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1911,25 +1933,25 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktifkan aplikasi" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Web Proxy (Privoxy)" msgid "I2P Proxy" @@ -1944,7 +1966,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1982,20 +2004,20 @@ msgstr "" msgid "ikiwiki" msgstr "wiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 #, fuzzy #| msgid "Manage Wikis and Blogs" msgid "Wiki and Blog" msgstr "Kelola Wiki dan Blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2004,24 +2026,24 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" msgstr "Layanan dan Aplikasi" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tipe" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Nama Akun Admin" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Kata sandi Akun Admin" @@ -2060,33 +2082,33 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Membuat wiki {name}." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Tidak dapat membuat wiki: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "membuat blog {name}." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Tidak dapat membuat blog: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} dihapus." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2096,17 +2118,17 @@ msgstr "Tidak dapat menghapus {name}: {error}" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "Server Web" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2133,11 +2155,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2248,36 +2270,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2286,7 +2308,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2296,7 +2318,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2335,7 +2357,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2367,11 +2389,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2382,11 +2404,11 @@ msgstr "Aplikasi telah terpasang." msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2394,7 +2416,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2403,7 +2425,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2445,29 +2467,29 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "Kata Sandi" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Application installed." msgid "Public registrations enabled" msgstr "Aplikasi telah terpasang." -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Application installed." msgid "Public registrations disabled" msgstr "Aplikasi telah terpasang." -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy #| msgid "Application installed." msgid "Private mode disabled" @@ -2478,11 +2500,11 @@ msgstr "Aplikasi telah terpasang." msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2534,7 +2556,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Address" @@ -2543,22 +2565,77 @@ msgstr "Address" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 #, fuzzy @@ -2566,31 +2643,31 @@ msgstr "" msgid "MLDonkey" msgstr "Monkeysphere" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2756,29 +2833,41 @@ msgstr "Publikasikan kunci ke keyserver." msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" msgstr "Pesan Suara (Mumble)" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +#, fuzzy +#| msgid "Show password" +msgid "Set SuperUser Password" +msgstr "Tampilkan kata sandi" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2787,6 +2876,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Nama Layanan" @@ -2833,43 +2926,43 @@ msgstr "Gunakan DNSSEC pada IPv{kind}" msgid "Connection Type" msgstr "Tipe Koneksi" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Nama Koneksi" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Interface Fisik" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Zona Firewall" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2877,180 +2970,180 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Shared" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 #, fuzzy msgid "Second DNS Server" msgstr "Second DNS Server" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automatic" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 #, fuzzy #| msgid "Automatic" msgid "Automatic, DHCP only" msgstr "Automatic" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- pilih --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Mode" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastructure" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Frequency Band" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 #, fuzzy msgid "Channel" msgstr "Channel" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Authentication Mode" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Open" @@ -3260,7 +3353,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3276,6 +3369,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3288,7 +3382,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3341,13 +3435,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3394,11 +3488,11 @@ msgstr "" msgid "OpenVPN" msgstr "Open" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3409,13 +3503,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3547,7 +3641,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3790,20 +3884,20 @@ msgstr "Matikan Sekarang" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 #, fuzzy #| msgid "Web Proxy (Privoxy)" msgid "Web Proxy" msgstr "Web Proxy (Privoxy)" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3813,7 +3907,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3822,11 +3916,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3837,7 +3931,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -4050,7 +4144,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4064,13 +4158,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4078,7 +4172,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4131,25 +4225,25 @@ msgstr "Shared" msgid "Action" msgstr "Aksi" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} dihapus." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Kesalahan pemasangan aplikasi: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "Shared" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4159,25 +4253,25 @@ msgstr "Kesalahan pemasangan aplikasi: {error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "Server Web" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4213,27 +4307,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4246,7 +4340,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4277,12 +4371,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4310,18 +4404,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4330,7 +4424,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4341,25 +4435,25 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 #, fuzzy #| msgid "Service" msgid "Server" msgstr "Layanan" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4422,60 +4516,60 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 #, fuzzy #| msgid "Add Service" msgid "Add share" msgstr "Tambah Layanan" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 #, fuzzy #| msgid "Shared" msgid "Shared Over" msgstr "Shared" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 #, fuzzy #| msgid "Shared" msgid "Share added." msgstr "Shared" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 #, fuzzy #| msgid "Add Service" msgid "Add Share" msgstr "Tambah Layanan" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 #, fuzzy #| msgid "Shared" msgid "Share edited." msgstr "Shared" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 #, fuzzy #| msgid "Shared" msgid "Edit Share" msgstr "Shared" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 #, fuzzy #| msgid "{name} deleted." msgid "Share deleted." @@ -4537,49 +4631,49 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 #, fuzzy #| msgid "Delete %(name)s" msgid "Daily Snapshots Limit" msgstr "Hapus %(name)s" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 #, fuzzy #| msgid "Delete %(name)s" msgid "Weekly Snapshots Limit" msgstr "Hapus %(name)s" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 #, fuzzy #| msgid "Delete %(name)s" msgid "Yearly Snapshots Limit" msgstr "Hapus %(name)s" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4659,13 +4753,13 @@ msgstr "Hapus %(name)s" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "General Configuration" msgid "Storage snapshots configuration updated" msgstr "Konfigurasi Umum" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4774,88 +4868,128 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, 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:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Actions" +msgid "Invalid directory name." +msgstr "Aksi" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "Publikasikan Kunci" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4921,11 +5055,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4933,7 +5067,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4944,7 +5078,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4952,11 +5086,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4964,7 +5098,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5024,76 +5158,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Aktifkan Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Aktifkan Tor relay" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5101,43 +5235,43 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor relay" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Aktifkan Tor relay" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5190,53 +5324,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5244,7 +5371,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5316,18 +5443,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5335,7 +5462,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5344,15 +5471,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5361,59 +5488,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Gagal membuat pengguna LDAP." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Gagal menambahkan pengguna baru ke kelompok admin." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5429,12 +5556,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5466,7 +5593,7 @@ msgid "Create Account" msgstr "Akun Administrator" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5492,62 +5619,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5590,12 +5717,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5711,6 +5838,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5796,46 +5927,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5848,15 +5975,15 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index eac61c83d..d860740c9 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-09-03 21:24+0000\n" "Last-Translator: Swann Martinet \n" "Language-Team: Italian any user on {box_name} " @@ -677,11 +677,33 @@ msgstr "" "informazioni sensibili e le possibilità di alterare il sistema sono limitate " "agli utenti appartenenti al gruppo admin." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Access Point" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Configurazione Generale" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -689,13 +711,13 @@ msgstr "Configurazione Generale" msgid "Configure" msgstr "Configura" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Nome dominio" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Nome dominio non valido" @@ -725,12 +747,12 @@ msgstr "" "lettere dell'alfabeto, cifre e trattini. La lunghezza totale non deve essere " "superiore a 63 caratteri." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 #, fuzzy msgid "Invalid hostname" msgstr "Hostname non valido" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, fuzzy, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -748,11 +770,11 @@ msgstr "" "ogni etichetta non deve essere superiore a 63 caratteri. La lunghezza totale " "del nome di dominio non deve superare i 253 caratreri" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -762,54 +784,54 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Errore impostazione hostname: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 #, fuzzy msgid "Hostname set" msgstr "Imposta hostname" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Errore impostazione nome di dominio: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 #, fuzzy msgid "Domain name set" msgstr "Imposta nome di dominio" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Errore impostazione home page server web: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Errore impostazione nome di dominio: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -817,7 +839,7 @@ msgstr "" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 #, fuzzy msgid "File Sharing" msgstr "Condivisione File" @@ -939,16 +961,16 @@ msgstr "Impostazione fuso orario" msgid "Deluge" msgstr "Delege" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "Web Client BitTorrent" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge è un client BitTorrent che può essere gestito da Web UI." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1675,7 +1697,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1759,37 +1781,37 @@ msgstr "Rimuovere l'archivio in modo definitivo?" msgid "Delete %(name)s" msgstr "Cancella %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "Error occurred while publishing key." msgid "An error occurred while creating the repository." msgstr "Errore sorto durante la pubblicazione della chiave." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Connection" msgid "Edit repository" msgstr "Crea Connessione" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} cancellato." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Non è stato possibile cancellare {name}: {error}" @@ -1798,8 +1820,8 @@ msgstr "Non è stato possibile cancellare {name}: {error}" msgid "Documentation" msgstr "Documentazione" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manuale" @@ -1960,7 +1982,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Impara di più..." @@ -2094,11 +2116,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2106,7 +2128,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy msgid "" "Find more information about I2P on their project " -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Abilita applicazione" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -2142,7 +2164,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2178,11 +2200,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki e Blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy msgid "" "ikiwiki is a simple wiki and blog application. It supports several " @@ -2194,7 +2216,7 @@ msgstr "" "blogging come commenti e feed RSS. Quando abilitato, i blog e wiki saranno " "disponibili su /ikiwiki/, una volta creati." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, fuzzy, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2208,22 +2230,22 @@ msgstr "" "Configurazione Utente è possibile cambiare questi permessi o aggiungere " "nuovi utenti." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Vedi e modifica le applicazioni wiki" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tipo" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Nome Utente Amministratore" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Password Profilo Amministratore" @@ -2264,33 +2286,33 @@ msgstr "" "Quest'azione cancellerà tutti i post, le pagine e i commenti, incluse le " "revisione storiche. Cancellare questo wiki o blog permanentente?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Creato wiki {name}." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, fuzzy, python-brace-format msgid "Could not create wiki: {error}" msgstr "Non è stato possibile creare l'wiki:{error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Creato blog {name}." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Non è stato possibile creare il blog: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} cancellato." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2300,16 +2322,16 @@ msgstr "Non è stato possibile cancellare {name}: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby Server" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 #, 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, fuzzy, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2342,11 +2364,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Client" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2466,7 +2488,7 @@ msgstr "" "Non è stato configurato nessun dominio. Configurante uno per poter ottenere " "dei certificati" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2475,29 +2497,29 @@ msgstr "" "Certificato revocato correttamente per il dominio {domain}. Ciò può " "richiedere alcuni minuti per avere effetto." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Revoca certificato fallita per il dominio {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certificato correttamente ottenuto per il dominio {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Rilascio certificato fallito per il dominio {domain}:{error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certificato cancellato correttamente per il dominio {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Cancellazione certificato fallita per il dominio {domain}:{error}" @@ -2506,7 +2528,7 @@ msgstr "Cancellazione certificato fallita per il dominio {domain}:{error}" msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2523,7 +2545,7 @@ 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:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @nomeutente:nomedominio." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2574,7 +2596,7 @@ msgstr "" "configurazione iniziale, non è correntemente supportato\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2611,11 +2633,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Registrazione pubblica abilitata" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Registrazione pubblica disabilitata" @@ -2624,11 +2646,11 @@ msgstr "Registrazione pubblica disabilitata" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2641,7 +2663,7 @@ msgstr "" "stile wiki, per prendere note o per collaborare con degli amici su dei " "progetti." -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2656,7 +2678,7 @@ msgstr "" "MediaWiki, andando nella pagina Speciale:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2705,23 +2727,23 @@ msgstr "" "potranno scrivere/leggere nel wiki. Inoltre saranno disabilitate le " "registrazioni pubbliche." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Password aggiornata" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2730,11 +2752,11 @@ msgstr "" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Block Sandbox" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2793,7 +2815,7 @@ msgstr "" "danno." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Indirizzo" @@ -2802,54 +2824,109 @@ msgstr "Indirizzo" msgid "Port" msgstr "Porta" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Configurazione \"numero massimo giocatori\" aggiornata" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Configurazione \"Modalità creativa\" aggiornata" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "Configurazione PVP aggiornata" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 #, fuzzy msgid "Damage configuration updated" msgstr "Configurazione \"danni\" abilitata" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 #, fuzzy msgid "Peer-to-peer File Sharing" msgstr "Condivisione File" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Scarica file usando applicazioni eDonkey" @@ -3026,15 +3103,15 @@ msgstr "Chiave pubblicata nel keyserver." msgid "Error occurred while publishing key." msgstr "Errore sorto durante la pubblicazione della chiave." -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Voice Chat" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3042,7 +3119,7 @@ msgstr "" "Mumble è un software di chat vocale ad alta qualità, a bassa latenza, " "cifrato e open source." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3052,6 +3129,16 @@ msgstr "" "64738 Sono disponibili dei client da " "connettere a Mumble dai tuoi dispositivi desktop e android." +#: plinth/modules/mumble/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3060,6 +3147,10 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Name Services" @@ -3106,24 +3197,24 @@ msgstr "Utilizzo DNSSEC su IPv{kind}" msgid "Connection Type" msgstr "Tipo Connessione" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Nome Connessione" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Interfaccia Fisica" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" "Il dispositivo di rete a cui dovrebbe essere legata questa connessione." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Firewall Zone" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3131,21 +3222,21 @@ msgstr "" "La firewall zone controlla quali servizi sono disponibili su questa " "interfaccia. Selezione Interna solo per le reti fidate." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Esterna" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "Metodo d'indirizzamento IPv4" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3156,19 +3247,19 @@ msgstr "" "come client. Col metodo \"Condiviso\" {box_name} agisce come router, " "configura i client nella sua rete e condivide la sua connessione Internet." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automatico (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Condiviso" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3176,21 +3267,21 @@ msgstr "" "Valore opzionale. Le lasciato vuoto, sarà usato un valore predefinito basato " "sull'indirizzo IP." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Valore opzionale." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3199,11 +3290,11 @@ msgstr "" "indirizzamento è \"Automatico\", i server DNS assegnati dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Server DNS secondario" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3211,11 +3302,11 @@ msgstr "" "Valore opzionale. Se viene assegnato un valore e il metodo d'indirizzamento " "è \"Automatico\", i server DNS assegnati dal server DHCP saranno ignorati." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "Metodo Indirizzamento IPv6" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3224,27 +3315,27 @@ msgstr "" "Con la modalità \"Automatica\" il {box_name} otterrà la configurazione di " "rete come client." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automatica" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automatica, solo DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Ignora" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Prefisso" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Valore compreso tra 1 e 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3253,7 +3344,7 @@ msgstr "" "d'indirizzamento IPv6 è \"automatico\", i server DNS forniti dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3262,54 +3353,54 @@ msgstr "" "d'indirizzamento IPv6 è \"automatico\", i server DNS forniti dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- seleziona--" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Il nome visibile sella rete." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modalità" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastruttura" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Banda di frequenza" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Canale" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3318,11 +3409,11 @@ msgstr "" "selezionata. Il valore 0, o l'assenza di valore, significa che sarà " "impostata la selezione automatica." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3332,11 +3423,11 @@ msgstr "" "connessione ad un access point, connettersi solo se il BSSID dell'access " "point combacia con quello fornito. Per esempio: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Modalità Autenticazione" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3344,11 +3435,11 @@ msgstr "" "Scegli WPA se la rete wireless è protetta e richiede che i client abbiano la " "password WiFi." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Aperta" @@ -3558,7 +3649,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Metodo" @@ -3574,6 +3665,7 @@ msgstr "Server DNS" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Default" @@ -3586,7 +3678,7 @@ msgid "This connection is not active." msgstr "Questa connessione non è attiva." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Sicurezza" @@ -3650,13 +3742,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3701,11 +3793,11 @@ msgstr "Crea..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Virtual Private Network" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3722,14 +3814,14 @@ msgstr "" "accedere al resto della rete Internet via {box_name} per una maggiore " "sicurezza e anonimità." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" " Scarica Profilo " -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "Abilita server OpenVPN" @@ -3900,7 +3992,7 @@ msgstr "" "Selezione il tuo server pagekite. Imposta \"pagekite.net\" per usare il " "server predefinito di pagekite.net." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Porta server" @@ -4174,11 +4266,11 @@ msgstr "Spegni Ora" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4189,7 +4281,7 @@ msgstr "" "header HTTP, controllando gli accessi, rimuovendo pubblicità e altra odiosa " "spazzatura dell'Internet. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4204,7 +4296,7 @@ msgstr "" "documentazione su http://config." "Privoxy.org/ o http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accesso {url} con proxy {proxy} su tcp{kind}" @@ -4213,11 +4305,11 @@ msgstr "Accesso {url} con proxy {proxy} su tcp{kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "Client IRC" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4234,7 +4326,7 @@ msgstr "" "possibile usare uno o più client Quassel desktop o mobile, per connettersi " "e disconnettersi su di esso." -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your un'applicazione client supportata. È possibile accedere a Radicale da ogni utente con un profilo {box_name}." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4355,7 +4447,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "" @@ -4440,11 +4532,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4452,7 +4544,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 msgid "" "You can access Roundcube from /roundcube. Provide the username and password of the email account " @@ -4462,7 +4554,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4476,13 +4568,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4490,7 +4582,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4543,24 +4635,24 @@ msgstr "Nome Kite" msgid "Action" msgstr "Azioni" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "PageKite enabled" msgid "Share enabled." msgstr "PageKite abilitato" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Errore installazione applicazione: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "PageKite disabled" msgid "Share disabled." msgstr "PageKite disabilitato" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Errore installazione applicazione: {error}" @@ -4569,23 +4661,23 @@ msgstr "Errore installazione applicazione: {error}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4617,27 +4709,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4652,7 +4744,7 @@ msgid "Show security report" msgstr "Sicurezza" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4685,12 +4777,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4718,18 +4810,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4738,7 +4830,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4749,23 +4841,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4826,48 +4918,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4925,43 +5017,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5037,11 +5129,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -5145,83 +5237,122 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +msgid "Invalid directory name." +msgstr "Hostname non valido" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "Importa chiave" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -5287,11 +5418,11 @@ msgstr "" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5299,7 +5430,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5310,7 +5441,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -5318,11 +5449,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5330,7 +5461,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5386,76 +5517,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5463,43 +5594,43 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable OpenVPN server" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Abilita server OpenVPN" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5550,39 +5681,32 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5609,7 +5733,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5675,18 +5799,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5694,7 +5818,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5703,15 +5827,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5720,59 +5844,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5788,12 +5912,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5823,7 +5947,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5849,62 +5973,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5947,12 +6071,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -6062,6 +6186,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6141,46 +6269,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% completata" @@ -6193,15 +6317,15 @@ msgstr "Avvia client web" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Applicazione abilitata" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Applicazione disabilitata" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index 0ebd5f2a9..9181dfade 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,22 +22,22 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:299 +#: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:302 +#: plinth/action_utils.py:301 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:407 +#: plinth/action_utils.py:406 #, python-brace-format msgid "Access URL {url} on tcp{kind}" msgstr "" -#: plinth/action_utils.py:411 +#: plinth/action_utils.py:410 #, python-brace-format msgid "Access URL {url}" msgstr "" @@ -52,7 +52,7 @@ msgstr "" msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:37 plinth/views.py:61 +#: plinth/context_processors.py:36 plinth/views.py:61 msgid "FreedomBox" msgstr "" @@ -60,38 +60,38 @@ msgstr "" msgid "Enable application" msgstr "" -#: plinth/forms.py:55 +#: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" -#: plinth/forms.py:57 +#: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -#: plinth/forms.py:65 +#: plinth/forms.py:64 msgid "Language" msgstr "" -#: plinth/forms.py:66 +#: plinth/forms.py:65 msgid "Language to use for presenting this web interface" msgstr "" -#: plinth/forms.py:73 +#: plinth/forms.py:72 msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:73 plinth/templates/setup.html:57 +#: plinth/middleware.py:72 plinth/templates/setup.html:45 msgid "Application installed." msgstr "" -#: plinth/middleware.py:79 +#: plinth/middleware.py:78 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:83 +#: plinth/middleware.py:82 #, python-brace-format msgid "Error installing application: {error}" msgstr "" @@ -102,7 +102,7 @@ msgstr "" msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:58 +#: plinth/modules/apache/__init__.py:57 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -192,7 +192,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" msgstr "" @@ -262,27 +262,27 @@ msgstr "" msgid "Connection refused" msgstr "" -#: plinth/modules/backups/repository.py:63 +#: plinth/modules/backups/repository.py:62 msgid "Repository not found" msgstr "" -#: plinth/modules/backups/repository.py:69 +#: plinth/modules/backups/repository.py:67 msgid "Incorrect encryption passphrase" msgstr "" -#: plinth/modules/backups/repository.py:74 +#: plinth/modules/backups/repository.py:72 msgid "SSH access denied" msgstr "" -#: plinth/modules/backups/repository.py:80 +#: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" -#: plinth/modules/backups/repository.py:154 +#: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." msgstr "" -#: plinth/modules/backups/repository.py:342 +#: plinth/modules/backups/repository.py:337 #, python-brace-format msgid "{box_name} storage" msgstr "" @@ -337,7 +337,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -346,9 +346,9 @@ msgid "Delete this archive permanently?" msgstr "" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "" @@ -583,9 +583,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -593,11 +593,11 @@ msgstr "" msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -606,18 +606,38 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, 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:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -625,13 +645,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -656,11 +676,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -671,11 +691,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -685,51 +705,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -737,7 +757,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -835,23 +855,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -869,7 +889,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -957,18 +977,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1007,46 +1027,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1055,68 +1075,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1175,7 +1195,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1183,15 +1203,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1199,18 +1219,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1447,7 +1467,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1517,33 +1537,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1552,8 +1572,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1692,7 +1712,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1806,11 +1826,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1818,23 +1838,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1847,7 +1867,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1883,18 +1903,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1903,22 +1923,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1957,32 +1977,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1991,15 +2011,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2026,11 +2046,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2135,36 +2155,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2173,7 +2193,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2183,7 +2203,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2220,7 +2240,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2252,11 +2272,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2265,11 +2285,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2277,7 +2297,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2286,7 +2306,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2322,23 +2342,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2347,11 +2367,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2397,7 +2417,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2406,52 +2426,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2613,27 +2688,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2642,6 +2727,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2688,43 +2777,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2732,176 +2821,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3108,7 +3197,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3124,6 +3213,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3136,7 +3226,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3189,13 +3279,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3238,11 +3328,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3253,13 +3343,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3387,7 +3477,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3628,18 +3718,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3649,7 +3739,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3658,11 +3748,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3673,7 +3763,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3882,7 +3972,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3896,13 +3986,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3910,7 +4000,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3959,20 +4049,20 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -3981,23 +4071,23 @@ msgstr "" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4029,27 +4119,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4062,7 +4152,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4091,12 +4181,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4124,18 +4214,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4144,7 +4234,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4155,23 +4245,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4230,48 +4320,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4329,43 +4419,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4441,11 +4531,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4544,83 +4634,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4686,11 +4812,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4698,7 +4824,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4709,7 +4835,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4717,11 +4843,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4729,7 +4855,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4785,76 +4911,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4862,41 +4988,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4945,53 +5071,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -4999,7 +5118,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5065,18 +5184,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5084,7 +5203,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5093,15 +5212,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5110,59 +5229,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5178,12 +5297,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5213,7 +5332,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5239,62 +5358,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5337,12 +5456,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5452,6 +5571,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5531,46 +5654,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5583,14 +5702,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index 0ebd5f2a9..9181dfade 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,22 +22,22 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:299 +#: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:302 +#: plinth/action_utils.py:301 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:407 +#: plinth/action_utils.py:406 #, python-brace-format msgid "Access URL {url} on tcp{kind}" msgstr "" -#: plinth/action_utils.py:411 +#: plinth/action_utils.py:410 #, python-brace-format msgid "Access URL {url}" msgstr "" @@ -52,7 +52,7 @@ msgstr "" msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:37 plinth/views.py:61 +#: plinth/context_processors.py:36 plinth/views.py:61 msgid "FreedomBox" msgstr "" @@ -60,38 +60,38 @@ msgstr "" msgid "Enable application" msgstr "" -#: plinth/forms.py:55 +#: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" -#: plinth/forms.py:57 +#: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -#: plinth/forms.py:65 +#: plinth/forms.py:64 msgid "Language" msgstr "" -#: plinth/forms.py:66 +#: plinth/forms.py:65 msgid "Language to use for presenting this web interface" msgstr "" -#: plinth/forms.py:73 +#: plinth/forms.py:72 msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:73 plinth/templates/setup.html:57 +#: plinth/middleware.py:72 plinth/templates/setup.html:45 msgid "Application installed." msgstr "" -#: plinth/middleware.py:79 +#: plinth/middleware.py:78 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:83 +#: plinth/middleware.py:82 #, python-brace-format msgid "Error installing application: {error}" msgstr "" @@ -102,7 +102,7 @@ msgstr "" msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:58 +#: plinth/modules/apache/__init__.py:57 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -192,7 +192,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" msgstr "" @@ -262,27 +262,27 @@ msgstr "" msgid "Connection refused" msgstr "" -#: plinth/modules/backups/repository.py:63 +#: plinth/modules/backups/repository.py:62 msgid "Repository not found" msgstr "" -#: plinth/modules/backups/repository.py:69 +#: plinth/modules/backups/repository.py:67 msgid "Incorrect encryption passphrase" msgstr "" -#: plinth/modules/backups/repository.py:74 +#: plinth/modules/backups/repository.py:72 msgid "SSH access denied" msgstr "" -#: plinth/modules/backups/repository.py:80 +#: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" -#: plinth/modules/backups/repository.py:154 +#: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." msgstr "" -#: plinth/modules/backups/repository.py:342 +#: plinth/modules/backups/repository.py:337 #, python-brace-format msgid "{box_name} storage" msgstr "" @@ -337,7 +337,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -346,9 +346,9 @@ msgid "Delete this archive permanently?" msgstr "" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "" @@ -583,9 +583,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -593,11 +593,11 @@ msgstr "" msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -606,18 +606,38 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, 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:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -625,13 +645,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -656,11 +676,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -671,11 +691,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -685,51 +705,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -737,7 +757,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -835,23 +855,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -869,7 +889,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -957,18 +977,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1007,46 +1027,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1055,68 +1075,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1175,7 +1195,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1183,15 +1203,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1199,18 +1219,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1447,7 +1467,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1517,33 +1537,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1552,8 +1572,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1692,7 +1712,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1806,11 +1826,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1818,23 +1838,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1847,7 +1867,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1883,18 +1903,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1903,22 +1923,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1957,32 +1977,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1991,15 +2011,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2026,11 +2046,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2135,36 +2155,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2173,7 +2193,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2183,7 +2203,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2220,7 +2240,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2252,11 +2272,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2265,11 +2285,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2277,7 +2297,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2286,7 +2306,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2322,23 +2342,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2347,11 +2367,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2397,7 +2417,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2406,52 +2426,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2613,27 +2688,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2642,6 +2727,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2688,43 +2777,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2732,176 +2821,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3108,7 +3197,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3124,6 +3213,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3136,7 +3226,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3189,13 +3279,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3238,11 +3328,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3253,13 +3343,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3387,7 +3477,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3628,18 +3718,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3649,7 +3739,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3658,11 +3748,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3673,7 +3763,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3882,7 +3972,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3896,13 +3986,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3910,7 +4000,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3959,20 +4049,20 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -3981,23 +4071,23 @@ msgstr "" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4029,27 +4119,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4062,7 +4152,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4091,12 +4181,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4124,18 +4214,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4144,7 +4234,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4155,23 +4245,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4230,48 +4320,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4329,43 +4419,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4441,11 +4531,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4544,83 +4634,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4686,11 +4812,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4698,7 +4824,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4709,7 +4835,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4717,11 +4843,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4729,7 +4855,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4785,76 +4911,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4862,41 +4988,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4945,53 +5071,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -4999,7 +5118,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5065,18 +5184,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5084,7 +5203,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5093,15 +5212,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5110,59 +5229,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5178,12 +5297,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5213,7 +5332,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5239,62 +5358,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5337,12 +5456,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5452,6 +5571,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5531,46 +5654,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5583,14 +5702,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index 0780d5c66..513782400 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,22 +23,22 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:299 +#: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:302 +#: plinth/action_utils.py:301 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:407 +#: plinth/action_utils.py:406 #, python-brace-format msgid "Access URL {url} on tcp{kind}" msgstr "" -#: plinth/action_utils.py:411 +#: plinth/action_utils.py:410 #, python-brace-format msgid "Access URL {url}" msgstr "" @@ -53,7 +53,7 @@ msgstr "" msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:37 plinth/views.py:61 +#: plinth/context_processors.py:36 plinth/views.py:61 msgid "FreedomBox" msgstr "" @@ -61,38 +61,38 @@ msgstr "" msgid "Enable application" msgstr "" -#: plinth/forms.py:55 +#: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" -#: plinth/forms.py:57 +#: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -#: plinth/forms.py:65 +#: plinth/forms.py:64 msgid "Language" msgstr "" -#: plinth/forms.py:66 +#: plinth/forms.py:65 msgid "Language to use for presenting this web interface" msgstr "" -#: plinth/forms.py:73 +#: plinth/forms.py:72 msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:73 plinth/templates/setup.html:57 +#: plinth/middleware.py:72 plinth/templates/setup.html:45 msgid "Application installed." msgstr "" -#: plinth/middleware.py:79 +#: plinth/middleware.py:78 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:83 +#: plinth/middleware.py:82 #, python-brace-format msgid "Error installing application: {error}" msgstr "" @@ -103,7 +103,7 @@ msgstr "" msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:58 +#: plinth/modules/apache/__init__.py:57 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -193,7 +193,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" msgstr "" @@ -263,27 +263,27 @@ msgstr "" msgid "Connection refused" msgstr "" -#: plinth/modules/backups/repository.py:63 +#: plinth/modules/backups/repository.py:62 msgid "Repository not found" msgstr "" -#: plinth/modules/backups/repository.py:69 +#: plinth/modules/backups/repository.py:67 msgid "Incorrect encryption passphrase" msgstr "" -#: plinth/modules/backups/repository.py:74 +#: plinth/modules/backups/repository.py:72 msgid "SSH access denied" msgstr "" -#: plinth/modules/backups/repository.py:80 +#: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" -#: plinth/modules/backups/repository.py:154 +#: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." msgstr "" -#: plinth/modules/backups/repository.py:342 +#: plinth/modules/backups/repository.py:337 #, python-brace-format msgid "{box_name} storage" msgstr "" @@ -338,7 +338,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -347,9 +347,9 @@ msgid "Delete this archive permanently?" msgstr "" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "" @@ -584,9 +584,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -594,11 +594,11 @@ msgstr "" msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -607,18 +607,38 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, 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:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -626,13 +646,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -657,11 +677,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -672,11 +692,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -686,51 +706,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -738,7 +758,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -836,23 +856,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -870,7 +890,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -958,18 +978,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1008,46 +1028,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1056,68 +1076,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1176,7 +1196,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1184,15 +1204,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1200,18 +1220,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1448,7 +1468,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1518,33 +1538,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1553,8 +1573,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1693,7 +1713,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1807,11 +1827,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1819,23 +1839,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1848,7 +1868,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1884,18 +1904,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1904,22 +1924,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1958,32 +1978,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1992,15 +2012,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2027,11 +2047,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2136,36 +2156,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2174,7 +2194,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2184,7 +2204,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2221,7 +2241,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2253,11 +2273,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2266,11 +2286,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2278,7 +2298,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2287,7 +2307,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2323,23 +2343,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2348,11 +2368,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2398,7 +2418,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2407,52 +2427,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2614,27 +2689,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2643,6 +2728,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2689,43 +2778,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2733,176 +2822,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3109,7 +3198,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3125,6 +3214,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3137,7 +3227,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3190,13 +3280,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3239,11 +3329,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3254,13 +3344,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3388,7 +3478,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3629,18 +3719,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3650,7 +3740,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3659,11 +3749,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3674,7 +3764,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3883,7 +3973,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3897,13 +3987,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3911,7 +4001,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3960,20 +4050,20 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -3982,23 +4072,23 @@ msgstr "" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4030,27 +4120,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4063,7 +4153,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4092,12 +4182,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4125,18 +4215,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4145,7 +4235,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4156,23 +4246,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4231,48 +4321,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4330,43 +4420,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4442,11 +4532,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4545,83 +4635,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4687,11 +4813,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4699,7 +4825,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4710,7 +4836,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4718,11 +4844,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4730,7 +4856,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4786,76 +4912,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4863,41 +4989,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4946,53 +5072,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5000,7 +5119,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5066,18 +5185,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5085,7 +5204,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5094,15 +5213,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5111,59 +5230,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5179,12 +5298,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5214,7 +5333,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5240,62 +5359,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5338,12 +5457,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5453,6 +5572,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5532,46 +5655,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5584,14 +5703,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index ce76ce852..59bb0657a 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-11-12 08:04+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål /" @@ -689,11 +689,33 @@ msgstr "" "a>-banen på nettjeneren. Den kan brukes av enhver " "bruker på {box_name} som er medlem i admin-gruppen." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Aksesspunkt" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Generelt oppsett" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -701,13 +723,13 @@ msgstr "Generelt oppsett" msgid "Configure" msgstr "Sette opp" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Domenenavn" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Ugyldig domenenavn" @@ -736,11 +758,11 @@ msgstr "" "eller et tall, og inneholde bokstaver tall eller bindrestreker. Lengden må " "være 63 tegn eller mindre." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Ugyldig vertsnavn" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -756,11 +778,11 @@ msgstr "" "bare bokstaver, tall og bindestreker. Lengden på hver merkelapp må være 63 " "tegn, eller mindre. Lengden på domenenavnet må være 253 tegn, eller mindre." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Web-tjener-forside" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -776,51 +798,51 @@ msgstr "" "skrive /plinth eller /freedombox eksplisitt for å nå {box_name}-tjenesten " "(Plinth)." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Vis avanserte programmer og funksjoner" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "Vis programmer og funksjoner som krever dypere teknisk innsikt." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Feil ved setting av vertsnavn: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Vertsnavn satt" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Feil ved innstilling/setting av domenenavn: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Domenenavn satt" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Feil ved setting av nettstedets hjemmeside: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Webtjenerforside satt" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Feil ved bytte til avansert modus: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "Viser avanserte programmer og funksjoner" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Viser ikke avanserte programmer og funksjoner" @@ -828,7 +850,7 @@ msgstr "Viser ikke avanserte programmer og funksjoner" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Fildeling" @@ -945,16 +967,16 @@ msgstr "Tidssone satt" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "BitTorrent nett-klient" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 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:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from web clientGit tutorial." @@ -1646,7 +1668,7 @@ msgstr "" "For å lære mer om bruk av Git, besøk Git-veiledningen." -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 #, fuzzy msgid "Read-write access to Git repositories" msgstr "Lese- og skrivetilgang til Git-kodelagre" @@ -1683,7 +1705,7 @@ msgstr "Opprett nytt depot" msgid "Optional, for displaying on Gitweb." msgstr "Valgfritt, for visning på Gitweb." -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" @@ -1779,41 +1801,41 @@ msgstr "Slett dette øyeblikksbildet permanent?" msgid "Delete %(name)s" msgstr "Slette %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Depot fjernet." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "En feil oppsto under konfigureringen." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Depot fjernet." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Opprett depot" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "En feil oppsto under konfigureringen." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "Slettet {name}." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" @@ -1822,8 +1844,8 @@ msgstr "Kunne ikke slette {name}: {error}" msgid "Documentation" msgstr "Dokumentasjon" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -1997,7 +2019,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Lær mer…" @@ -2146,11 +2168,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Anonymitetsnettverk" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2162,7 +2184,7 @@ msgstr "" "anonymitet ved å sende kryptert trafikk gjennom et frivilligdrevet nettverk " "distribuert verden om." -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." @@ -2170,7 +2192,7 @@ msgstr "" "For mer informasjon om I2P, sjekk deres nettside." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2178,11 +2200,11 @@ msgstr "" "Den første til å besøke det oppsatte nettgrensesnittet vil igangsette " "oppsettsprosessen." -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "Håndter I2P-program" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -2197,7 +2219,7 @@ msgstr "Start" msgid "Proxies" msgstr "Mellomtjenere" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Anonyme torrenter" @@ -2242,11 +2264,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki og Blogg" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2264,7 +2286,7 @@ msgstr "" "som kommentarer og RSS-kilder. Når den er aktiv, vil bloggene og wikiene " "bli tilgjengelig på /ikiwiki (etter opprettelsen)." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2278,22 +2300,22 @@ msgstr "" "\"{users_url}\">brukeroppsettet kan du endre disse tilgangene eller " "legge til nye brukere." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Vis og rediger wiki-programmer" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Administratorkonto navn" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Administratorkonto passord" @@ -2334,33 +2356,33 @@ msgstr "" "Denne handlingen vil fjerne alle poster, sider og kommentarer inkludert " "revisjonshistorien. Skal denne wiki eller bloggen slettes permanent?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Opprettet wiki {name}." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Kunne ikke opprette wiki: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Opprettet blogg {name}." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Kunne ikke lage blogg: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "Slettet {name}." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2370,15 +2392,15 @@ msgstr "Kunne ikke slette {name}: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby-tjener" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2410,11 +2432,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Nettpratklient" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2532,7 +2554,7 @@ msgstr "" "Ingen domener er satt opp. Sett opp domener " "for å kunne skaffe sertifikater for dem." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2541,29 +2563,29 @@ msgstr "" "Sertifikat vellykket tilbakekalt for domenet {domain}. Det kan ta en liten " "stund før dette tar effekt." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Klarte ikke å inndra sertifikatet for domenet {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Sertifikat vellykket innhentet til domene {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Klarte ikke å oppnå sertifikat til domene {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Vellykket sletting av sertifikatet for domenet {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Klarte ikke å slette sertifikatet for domenet {domain}: {error}" @@ -2572,7 +2594,7 @@ msgstr "Klarte ikke å slette sertifikatet for domenet {domain}: {error}" msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2588,7 +2610,7 @@ 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:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2639,7 +2661,7 @@ msgstr "" " installasjonen støttes for øyeblikket ikke.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2685,11 +2707,11 @@ msgstr "" " Encrypt for å skaffe deg det.\n" " " -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Offentlig registrering påskrudd" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Offentlig registrering avskrudd" @@ -2698,11 +2720,11 @@ msgstr "Offentlig registrering avskrudd" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2715,7 +2737,7 @@ msgstr "" "lignende nettside, ta noteter, eller samarbeide med andre venner på " "prosjekter." -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2729,7 +2751,7 @@ msgstr "" "brukerkontoer fra MediaWiki, ved å gå til Special:CreateAccount-siden." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2773,23 +2795,23 @@ msgstr "" "Hvis påskrudd, vil tilgang begrenses. Kun folk som har kontoer kan lese/" "skrive på wiki-en. Offentlige registreringer vil også bli avskrudd." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Passord oppdatert" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Offentlig registrering aktivert" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Offentlig registrering avskrudd" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Privat modus påskrudd" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Privat modus avskrudd" @@ -2798,11 +2820,11 @@ msgstr "Privat modus avskrudd" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Block-sandkassen" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2857,7 +2879,7 @@ msgstr "" "Når den ikke er aktiv, kan ikke spillere dø eller ta skade av noe slag." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Adresse" @@ -2866,32 +2888,87 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Oppsett av maks spillere oppdatert" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Oppsett av kreativ modus oppdatert" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "PVP-oppsett oppdatert" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Skadeoppsett oppdatert" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "Maskin til maskin-fildeling" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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 " @@ -2901,7 +2978,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:48 +#: plinth/modules/mldonkey/__init__.py:50 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 " @@ -2912,13 +2989,13 @@ msgstr "" "gjennom en av de egne mobil- eller skrivebords-grenseflatene, eller et " "telnet-grensesnitt. Se manualen." -#: plinth/modules/mldonkey/__init__.py:53 +#: plinth/modules/mldonkey/__init__.py:55 #, 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:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Last ned filer ved bruk av eDonkey-programmer" @@ -3098,15 +3175,15 @@ 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:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Talenettprat" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3114,7 +3191,7 @@ msgstr "" "Mumble er en åpen kildekode, rask, kryptert, høy kvalitets programvare for " "nettprat." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3124,6 +3201,18 @@ msgstr "" "\"http://mumble.info\">Klienter for å koble til Mumble når skrivebordet " "og/eller Android-enheter er tilgjengelige." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "SSH-tjenermaskinpassord" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3132,6 +3221,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Vellykket passordbytte." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Navnetjenester" @@ -3193,23 +3288,23 @@ msgstr "Bruker DNSSEC på IPv{kind}" msgid "Connection Type" msgstr "Oppkoblingstype" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Oppkoblingsnavn" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Fysisk grensesnitt" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "Nettverksenheten som denne forbindelsen bør være bundet til." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Brannmursone" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3217,21 +3312,21 @@ msgstr "" "Brannmuren vil kontrollere hvilke tjenester som er tilgjengelig over dette " "grensesnitt. Velg Internal (Internt) bare for klarerte nettverk." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Eksternt" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPv4 adresseringsmetode" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3243,19 +3338,19 @@ msgstr "" "å oppføre seg som en router, sette opp klienter på dette nettverket og dele " "sin Internett-forbindelse." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automatisk (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Delt" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Nettmaske" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3263,21 +3358,21 @@ msgstr "" "Valgfri verdi. Om det står tomt, vil en standard nettmaske, basert på " "adressen, bli brukt." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Inngangsport" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Valgfri verdi." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS-tjener" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3285,11 +3380,11 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv4-adresseringsmetoden er " "«Automatisk», så vil DNS-tjenerne levert fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Andre DNS-tjener" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3297,11 +3392,11 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv4-adresseringsmetoden er " "«Automatisk», vil DNS-serverne som tilbys fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "IPv6-adresseringsmetode" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3310,27 +3405,27 @@ msgstr "" "«Automatiske» metoder vil få {box_name} til å hente oppsettet fra dette " "nettverket og gjøre den til en klient." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automatisk" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automatisk, kun DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Overse" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Forstavelse" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Verdi mellom 1 og 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3338,7 +3433,7 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv6-adresseringsmetoden er " "«Automatisk», så vil DNS-tjenerne levert fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3346,54 +3441,54 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv6-adresseringsmetoden er " "«Automatisk», så vil DNS-serverne som tilbys fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- velg --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID (Service Set Identifier)" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Det synlige navnet på nettverket." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Aksesspunkt" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Frekvensbånd" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3401,11 +3496,11 @@ msgstr "" "Valgfri verdi. Trådløskanal i det valgte frekvensbåndet som det skal " "begrenses til. Blank eller verdi 0 betyr at det skal velges automatisk." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3415,11 +3510,11 @@ msgstr "" "aksesspunkt, koble kun til hvis BSSID-en til aksesspunktet stemmer med det " "som er oppgitt. Eksempel: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Autentiseringsmodus" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3427,11 +3522,11 @@ msgstr "" "Velg WPA (Wi-Fi Protected Access) hvis det trådløse nettverket er sikret og " "krever at brukerne har passordet som trengs for å koble seg til." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Åpen" @@ -3640,7 +3735,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Metode" @@ -3656,6 +3751,7 @@ msgstr "DNS-tjener" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Forvalg" @@ -3668,7 +3764,7 @@ msgid "This connection is not active." msgstr "Denne forbindelsen er ikke aktiv." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Sikkerhet" @@ -3733,13 +3829,13 @@ msgstr "Lage mellomrom" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3784,11 +3880,11 @@ msgstr "Lage ..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Virtuelt privat nettverk" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3805,14 +3901,14 @@ msgstr "" "Du kan også få tilgang til resten av Internettet via {box_name} med utvidet " "sikkerhet og anonymitet." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "Last ned profil" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "Aktiver OpenVPN-tjener" @@ -3980,7 +4076,7 @@ msgstr "" "Velg din PageKite-tjener. Sett «pagekite.net» for å bruke den forvalgte " "pagekite.net-tjeneren." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Tjenerport" @@ -4253,11 +4349,11 @@ msgstr "Slå av nå" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Mellomtjener for nettet" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4268,7 +4364,7 @@ msgstr "" "overskrifter, kontrollere tilgang, og fjerne annonser og annet ubehagelig " "Internett-søppel. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4284,7 +4380,7 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ eller http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgang {url} med mellomtjener {proxy} på tcp{kind}" @@ -4293,11 +4389,11 @@ msgstr "Tilgang {url} med mellomtjener {proxy} på tcp{kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "IRC-klient" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4314,7 +4410,7 @@ msgstr "" "skrivebordet kan en eller flere Quassel-klienter brukes til å koble til og " "fra." -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your støttet klientprogram . Radicale " "kan nås av alle brukere med {box_name}-innlogging." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4446,7 +4542,7 @@ msgstr "" "freedombox.address>) og ditt brukernavn. Å klikke på søkeknappen vil liste " "opp eksisterende kalendre og adressebøker." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Tilgangskontrolloppsett oppdatert" @@ -4565,11 +4661,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "E-postklient" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4581,7 +4677,7 @@ msgstr "" "forventer fra en e-posttjener, medregnet MIME-støtte, adressebok, " "mappebehandling, søk etter meldinger og stavekontroll." -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -4603,7 +4699,7 @@ msgstr "" "example.com. For IMAP over SSL (anbefalt), fyll feltet for tjeneren, " "som imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4623,13 +4719,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4637,7 +4733,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4692,25 +4788,25 @@ msgstr "Deling lagt til." msgid "Action" msgstr "Handlinger" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Deling slettet." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Deling redigert." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -4720,11 +4816,11 @@ msgstr "Feil ved utløsing av enhet: {error_message}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Nettsøk" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4732,7 +4828,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:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4740,7 +4836,7 @@ msgstr "" "Searx kan brukes for å unngå sporing og profilbygging av søkemotorer. Den " "lagrer ingen kaker som forvalg." -#: plinth/modules/searx/__init__.py:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Søk på nettet" @@ -4774,16 +4870,16 @@ msgstr "Tillat offentlig tilgang" msgid "Allow this application to be used by anyone who can reach it." msgstr "Tillat dette programmet brukt av alle som kan nå det." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Konfigurering oppdatert." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Begrens konsollinnlogging (anbefalt)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4793,11 +4889,11 @@ msgstr "" "ha mulighet til å logge inn via konsollet eller via SSH. Konsollbrukere kan " "være i stand til å koble seg til endel tjenester uten tilgangskontroll." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2Ban (anbefalt)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4814,7 +4910,7 @@ msgid "Show security report" msgstr "Vis sikkerhetssårbarheter" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security Notice" msgid "Security Report" @@ -4857,12 +4953,12 @@ msgstr "Vis sikkerhetssårbarheter" msgid "Past Vulnerabilities" msgstr "Vis sikkerhetssårbarheter" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Feil ved oppsetting av begrenset tilgang: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Oppdaterte sikkerhetsoppsett" @@ -4898,11 +4994,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "SOCKS5-mellomtjener" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4912,7 +5008,7 @@ msgstr "" "beskytte din internettrafikk. Den kan brukes til å omgå internettfiltrering " "og -sensur." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4925,7 +5021,7 @@ msgstr "" "enheter kan koble til denne mellomtjeneren, og deres data vil krypteres og " "mellomtjent gjennom Shadowsocks-tjeneren." -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4938,23 +5034,23 @@ msgstr "" msgid "Recommended" msgstr "Anbefalt" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Tjener" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Tjernens vertsnavn eller IP-adresse" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Tjener-portnummer" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "Passord brukt for å kryptere data. Må samsvare med tjenerpassord." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "Krypteringsmetode. Må samsvare med den brukt på tjeneren." @@ -5019,48 +5115,48 @@ msgstr "En deling ved dette navnet finnes allerede." msgid "Shares should be either public or shared with at least one group" msgstr "Delte områder bør enten være offentlig eller delt med minst en gruppe" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Legg til deling" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Ingen delte områder er satt opp foreløpig." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Disksti" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Delt over" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "Med Grupper" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "Offentlig tilgang" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Deling lagt til." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Legg til deling" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Deling redigert." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Rediger deling" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Deling slettet." @@ -5133,43 +5229,43 @@ msgstr "Øyeblikksbilder av programvareinstallasjoner" msgid "Enable or disable snapshots before and after software installation" msgstr "Skru på eller av øyeblikksbilder før og etter programvareinstallasjon" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Timevis avbildningsgrense" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Behold opptil dette antallet timevise øyeblikksbilder." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Daglig avbildningsgrense" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Behold opptil dette antallet daglige avbildninger." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Ukentlig avbildningsgrense" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Behold opptil dette antallet ukentlige øyeblikksbilder." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Månedlig avbildningsgrense" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Behold opptil dette antallet månedlige avbildninger." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Årlig avbildningsgrense" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5253,11 +5349,11 @@ msgstr "Behandle avbildninger" msgid "Created snapshot." msgstr "Opprett øyeblikksbilde." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Lagringsavbildings-oppsett oppdatert" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Handlingsfeil: {0} [{1}] [{2}]" @@ -5378,84 +5474,130 @@ msgstr "" "kan vise lagringsmedia som er i bruk, montere og avmontere flyttbare medium, " "utvide rotpartisjonen, osv." -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "Operasjonen mislyktes." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "Operasjonen ble avbrutt." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "Enheten avmonteres allerede." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 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:247 msgid "The operation timed out." msgstr "Tidsavbrudd for operasjon." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 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:254 msgid "The operation has already been cancelled." msgstr "Operasjonen har allerede blitt avbrutt." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 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:262 msgid "The device is already mounted." msgstr "Denne enheten er allerede montert." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "Enheten er ikke montert." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "Mangler rettigheter til bruk av forespurt valg." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "Enheten er montert av en annen bruker." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "Ugyldig vertsnavn" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Last ned katalog" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "Enheten er montert av en annen bruker." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Last ned katalog" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Public share" +msgid "Samba share" +msgstr "Del offentlig" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Følgende lagringsenheter er i bruk:" @@ -5529,11 +5671,11 @@ msgstr "Feil ved utløsing av enhet: {error_message}" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Filsynkronisering" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5544,7 +5686,7 @@ msgstr "" "Oppretting, endring og sletting av filer på én enhet vil automatisk bli " "replikert (gjenskapt) til andre enheter." -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5561,7 +5703,7 @@ 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:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "Administrer Syncthing-programmet" @@ -5569,11 +5711,11 @@ msgstr "Administrer Syncthing-programmet" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Distribuert fillagring" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5585,7 +5727,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:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5653,57 +5795,57 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Skjult Tor-tjeneste" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Tor Socks-mellomtjener" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Tor bro-stafettvideresendingsoppsett" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Tor relay-port tilgjengelig" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3-transport registrert" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4-transport registrert" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekreft Tor-bruk på {url} via tcp{kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "Angi en gyldig bro med dette formatet: [transport] IP:ORPort [fingerprint]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Aktiver Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Bruk oppstrøms broer til å koble til Tor-nettverket" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5714,11 +5856,11 @@ msgstr "" "blokkerer eller sensurerer tilkoblingene til Tor-nettverket. Dette vil " "deaktivere relé-modi." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Oppstrøms broer" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5728,11 +5870,11 @@ msgstr "" "\">https://bridges.torproject.org/ og kopiere/lime inn broinformasjonen " "her. For øyeblikket støttes ingen transporter, obfs3, obfs4 og scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Aktiver Tor-videresending" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5743,11 +5885,11 @@ msgstr "" "båndbredde til Tor-nettverket. Gjør dette hvis båndbredden din for " "opplasting og nestlasting er mer enn 2 Mbits/s." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Aktiver Tor-bru-videresending" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5758,20 +5900,20 @@ msgstr "" "gjør det vanskeligere å sensurere denne noden. Dette hjelper andre med å " "komme seg unna sensur." -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Aktiver skjulte Tor-tjenester" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5779,11 +5921,11 @@ msgstr "" "som wiki eller nettprat) uten å avsløre sin beliggenhet. Ikke bruk dette " "for å oppnå sterk anonymitet ennå." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Last ned programpakker via Tor" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5793,7 +5935,7 @@ msgstr "" "installasjoner og oppgraderinger. Dette legger til en viss grad privatliv " "(personvern) og sikkerhet under nedlasting av programvare." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "Angi minst én oppstrøms bro for å bruke oppstrøms broer." @@ -5847,7 +5989,7 @@ msgstr "" msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5856,29 +5998,19 @@ msgstr "" "(overføringsdemon) håndterer BitTorrent-fildeling i bakgrunnen. Merk at " "BitTorrent ikke er anonym." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Last ned katalog" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Katalog der nedlastinger lagres. Hvis du endrer standardkatalogen, må du " -"sikre at den nye katalogen eksisterer og er skrivbar av «debian-" -"transmission»-brukeren." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Nyhetstrøm-leser" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5888,7 +6020,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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5902,7 +6034,7 @@ msgstr "" "vevtjeneren når den er aktivert. Den er tilgjengelig for enhver bruker med et {box_name}-brukernavn." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -5915,7 +6047,7 @@ 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Les og abonner på nyhetsstrømmer" @@ -5923,7 +6055,7 @@ msgstr "Les og abonner på nyhetsstrømmer" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (avgreining)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Oppdater" @@ -5994,11 +6126,11 @@ msgstr "Oppgraderingsprosessen (upgrade process) har startet." msgid "Starting upgrade failed." msgstr "Å starte oppgradering (upgrade) mislyktes." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Brukere og grupper" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 #, fuzzy msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6009,7 +6141,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:55 +#: plinth/modules/users/__init__.py:56 #, fuzzy, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6020,7 +6152,7 @@ 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:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Sjekk LDAP-oppføring «{search_item}»" @@ -6029,15 +6161,15 @@ msgstr "Sjekk LDAP-oppføring «{search_item}»" msgid "Access to all services and system settings" msgstr "Tilgang til alle tjenester og systeminnstillinger" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "Brukernavnet er opptatt eller reservert." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Tilganger" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6051,20 +6183,20 @@ msgstr "" "gruppen kan logge seg på alle tjenester. De kan også logge inn på systemet " "via SSH, og ha administrative rettigheter (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Oppretting av LDAP-bruker feilet." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Klarte ikke legge ny bruker til gruppe {group}." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Autoriserte SSH-nøkler" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6074,39 +6206,39 @@ msgstr "" "på systemet uten å bruke passord. Du kan legge inn multiple (flere) nøkler, " "én på hver linje. Blanke linjer og linjer som starter med # vil bli ignorert." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "Klarte ikke å bytte navn på LDAP-bruker." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Klarte ikke å slette bruker fra gruppe." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Klarte ikke legge bruker til gruppe." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "Klarte ikke sette SSH-nøkler." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "Kan ikke slette kun administratoren i systemet." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Klarte ikke å bytte passord for LDAP-bruker." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Klarte ikke å legge til en ny bruker i admin-gruppen." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Klarte ikke begrense konsolltilgang." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Brukerkonto er opprettet, du er nå logget inn" @@ -6122,12 +6254,12 @@ msgstr "Lagre passord" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Opprett bruker" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Slett bruker" @@ -6160,7 +6292,7 @@ msgid "Create Account" msgstr "Opprett konto" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Brukere" @@ -6188,62 +6320,62 @@ msgstr "" msgid "Save Changes" msgstr "Lagre endringer" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Bruker %(username)s opprettet." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "Bruker %(username)s oppdatert." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Rediger bruker" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "Bruker {user} slettet." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "Klarte ikke slette LDAP-bruker." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Endre passord" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Vellykket passordbytte." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Generisk" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Feil under installasjon" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "installering" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "laster ned" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "mediaendring" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "oppsettsfil: {file}" @@ -6295,12 +6427,12 @@ msgstr "" "veldig fint om du legger statusloggen ved " "feilrapporten." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "Tjenesten %(service_name)s kjører." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "Tjenesten %(service_name)s kjører ikke." @@ -6412,6 +6544,10 @@ msgstr "" "Vent på at %(box_name)s fullfører installasjonen. Du kan begynne å bruke " "%(box_name)s når det er gjort." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Installasjon" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6505,19 +6641,15 @@ msgstr "" "ruteren din. Du må sette opp videresending for følgende porter for " "%(service_name)s:" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Installasjon" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Installere dette programmet?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Dette programmet trenger en oppdatering. Oppdatere nå?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6525,28 +6657,28 @@ msgstr "" "En annen installasjon eller oppgradering kjører allerede. Vent litt før du " "prøver igjen." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "Dette programmet er for tiden ikke tilgjengelig for din distribusjon." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Installer" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Utfører en forhåndsinstallasjon" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Utfører en etterinstallasjon" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "Installere %(package_names)s: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% fullført" @@ -6559,18 +6691,27 @@ msgstr "Sette i gang en web-klient" msgid "Client Apps" msgstr "Klientprogrammer" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Programmet er aktivert" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Programmet er deaktivert" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Gujarati" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Katalog der nedlastinger lagres. Hvis du endrer standardkatalogen, må du " +#~ "sikre at den nye katalogen eksisterer og er skrivbar av «debian-" +#~ "transmission»-brukeren." + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN-tjeneren kjører" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 32889875a..4bbf8eb33 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-10-15 22:52+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch /" @@ -649,11 +649,33 @@ msgstr "" "\"{users_url}\">iedere gebruiker op {box_name} die lid is van de " "systeembeheerdergroep (admin)." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Access Point" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Algemene Instellingen" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -661,13 +683,13 @@ msgstr "Algemene Instellingen" msgid "Configure" msgstr "Configureer" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Domeinnaam" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Foutieve domeinnaam" @@ -696,11 +718,11 @@ msgstr "" "cijfer, er tussenin mogen ook koppeltekens gezet worden. De totale lengte " "mag niet langer zijn dan 63 tekens." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Foutieve hostnaam" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -717,11 +739,11 @@ msgstr "" "per naam mag niet langer zijn dan 63 tekens. De totale domeinnaamlengte mag " "niet langer zijn dan 253 tekens." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Startpagina van de webserver" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -731,52 +753,52 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Hostnaam instellen mislukt: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Hostnaam ingesteld" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Domeinnaam instellen mislukt: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Domeinnaam ingesteld" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" "Fout bij het instellen van de startpagina van de webserver: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Startpagina van webserver ingesteld" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Fout bij het wijzigen van de geavanceerde modus: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Geavanceerde applicaties en functies verbergen" @@ -784,7 +806,7 @@ msgstr "Geavanceerde applicaties en functies verbergen" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Delen van bestanden" @@ -901,16 +923,16 @@ msgstr "Tijdzone ingesteld" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "BitTorrent-webclient" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 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:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /deluge pad op de webserver. Het standaardwachtwoord is " "'deluge', maar dit moet zo snel mogelijk na activering gewijzigd worden." -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Download bestanden met BitTorrent toepassingen" @@ -946,7 +968,7 @@ msgstr "" "De systeemdiagnose zal een aantal tests uitvoeren op dit systeem om te " "bevestigen dat de programma's en diensten zoals verwacht functioneren." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Diagnostische test" @@ -1044,18 +1066,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Instelling bijwerken" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Instelling onveranderd" @@ -1105,7 +1127,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Dynamische domeinnaam" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1115,7 +1137,7 @@ msgstr "" "worden gebruikt in de URL. Zie voor details de update URL voorbeelden van de " "voorbeeld providers." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1125,7 +1147,7 @@ msgstr "" "GnuDIP protocol gebruikt of de provider staat niet in de lijst, gebruik dan " "de update URL van de provider." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1133,19 +1155,19 @@ msgstr "" "Voer hier geen complete URL in (zoals \"https://example.com/\") maar alleen " "de hostnaam van de GnuDIP server (zoals \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "De publieke domeinnaam die gebruikt wordt om {box_name} aan te spreken." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Gebruik deze functie indien de provider gebruik maakt van self-signed " "certificaten." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1153,11 +1175,11 @@ msgstr "" "Als deze optie is geselecteerd wordt de gebruikersnaam en wachtwoord " "gebruikt voor HTTP basic authentificatie." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "Laat dit veld leeg om het huidige wachtwoord te behouden." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1170,68 +1192,68 @@ msgstr "" "Internet IP adres te bepalen. Het antwoord op het aanroepen van deze URL zou " "het IP adres moeten zijn (Voorbeeld: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "De gebruikersnaam die werd gebruikt toen de account werd gemaakt." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Dynamic DNS Inschakelen" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Dienst Type" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "GnuDIP Serveradres" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Foute servernaam" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "URL bijwerken" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Accepteer alle SSL certificaten" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Gebruik HTTP-basisverificatie" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Gebruikersnaam" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Wachtwoord" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Toon wachtwoord" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "URL voor controle van het IP-adres" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Voer een update URL of GnuDIP Serveradres in" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Voer een GnuDIP gebruikersnaam in" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Voer een GnuDIP domeinnaam in" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Voer een wachtwoord in" @@ -1307,7 +1329,7 @@ msgstr "Laatste bijwerking" msgid "About" msgstr "Over" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1315,15 +1337,15 @@ msgstr "Over" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Status" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Instellen Dynamic DNS" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Dynamische DNS-Status" @@ -1331,12 +1353,12 @@ msgstr "Dynamische DNS-Status" msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Chatserver" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1344,7 +1366,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1622,7 +1644,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" @@ -1717,41 +1739,41 @@ msgstr "Deze Snapshot permanent verwijderen?" msgid "Delete %(name)s" msgstr "%(name)s verwijderen" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Repository verwijderd." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Er is een fout opgetreden tijdens de configuratie." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Repository verwijderd." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Maak Repository" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Er is een fout opgetreden tijdens de configuratie." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} verwijderd." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Verwijderen van {name} mislukt: {error}" @@ -1760,8 +1782,8 @@ msgstr "Verwijderen van {name} mislukt: {error}" msgid "Documentation" msgstr "Documentatie" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Handmatig" @@ -1921,7 +1943,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Lees meer..." @@ -2056,11 +2078,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Anonimiteitsnetwerk" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2068,7 +2090,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." @@ -2076,17 +2098,17 @@ msgstr "" "Vind meer informatie over I2P op hun project homepage." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "I2P-toepassing beheren" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2099,7 +2121,7 @@ msgstr "Starten" msgid "Proxies" msgstr "Proxies" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Anonieme torrents" @@ -2138,11 +2160,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki en Blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2161,7 +2183,7 @@ msgstr "" "ingeschakeld, zijn de blogs en wiki's beschikbaar op /" "ikiwiki (indien gemaakt)." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2175,22 +2197,22 @@ msgstr "" "Configuratie kan je deze instellingen wijzigen en nieuwe gebruikers " "registreren." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Bekijken en bewerken van wiki toepassingen" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Type" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Beheerdersaccount naam" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Beheerdersaccount wachtwooord" @@ -2231,33 +2253,33 @@ msgstr "" "Deze actie zal alle bijdragen, pagina's, en commentaar inclusief revisie-" "historie. Deze wiki of blog permanent verwijderen?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Wiki {name} gemaakt." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Kan wiki niet aanmaken: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Blog {name} gemaakt." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Kan blog niet aanmaken: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} verwijderd." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2267,17 +2289,17 @@ msgstr "Verwijderen van {name} mislukt: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby Server" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2309,11 +2331,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Chat Cliënt" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2433,7 +2455,7 @@ msgstr "" "Er zijn geen geconfigureerde domeinen. Stel " "domeinen in om certificaten ervoor te kunnen uitgeven." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2442,29 +2464,29 @@ msgstr "" "Certificaat met succes ingetrokken voor domein {domain}. Het kan enige tijd " "duren voordat het effect heeft." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Intrekken certificaat voor domein {domain} mislukt: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certificaat voor domein {domain} met succes verkregen" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Verkrijgen van certificaat voor domein {domain} is mislukt: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certificaat met succes verwijderd voor domein {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Verwijderen certificaat voor domein {domain} mislukt: {error}" @@ -2473,7 +2495,7 @@ msgstr "Verwijderen certificaat voor domein {domain} mislukt: {error}" msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2490,7 +2512,7 @@ msgstr "" "Matrix server kunnen gesprekken aangaan met gebruikers op alle andere Matrix " "servers door federatie (gedecentraliseerd netwerk)." -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @gebruikersnaam:domeinnaam." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2543,7 +2565,7 @@ msgstr "" " wordt momenteel niet ondersteund.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2583,11 +2605,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Openbare registratie ingeschakeld" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Openbare registratie uitgeschakeld" @@ -2596,11 +2618,11 @@ msgstr "Openbare registratie uitgeschakeld" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2613,7 +2635,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:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2627,7 +2649,7 @@ msgstr "" "MediaWiki op de Speciaal:GebruikerRegistreren pagina." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2672,23 +2694,23 @@ msgstr "" "gebruikers zullen de wiki kunnen lezen en bewerken. Registratie is niet open " "voor publiek." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Wachtwoord bijgewerkt" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Openbare registraties ingeschakeld" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Openbare registraties uitgeschakeld" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Privé-modus ingeschakeld" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Privé-modus uitgeschakeld" @@ -2697,11 +2719,11 @@ msgstr "Privé-modus uitgeschakeld" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Block Sandbox" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2757,7 +2779,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Indien uitgeschakeld, kunnen spelers niet sterven of schade oplopen." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Adres" @@ -2766,52 +2788,109 @@ msgstr "Adres" msgid "Port" msgstr "Poort" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Instelling maximum aantal spelers bijgewerkt" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Instelling Creatieve modus bijgewerkt" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "Instelling PVP bijgewerkt" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Instelling schade bijgewerkt" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Mumble Voice Chat Server" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-peer bestandsdeling" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Bestanden downloaden met eDonkey-toepassingen" @@ -2994,15 +3073,15 @@ 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:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Voice Chat" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3010,7 +3089,7 @@ msgstr "" "Mumble is een Open Source, snelle, versleutelde, hoge kwaliteit " "groepsgespreksserver." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3021,6 +3100,18 @@ msgstr "" "programma's waarmee de Mumble dienst gebruikt kan worden. Er zijn " "programma's voor zowel desktop en Android machines." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "SSH-server wachtwoord" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3029,6 +3120,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Wachtwoord succesvol gewijzigd." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Domeinnamen" @@ -3075,23 +3172,23 @@ msgstr "Gebruikt DNSSEC op IPv{kind}" msgid "Connection Type" msgstr "Verbindingssoort" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Verbindingsnaam" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Fysieke Interface" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "De netwerkapparatuur waar deze verbinding mee moet worden verbonden." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Firewall Zone" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3099,21 +3196,21 @@ msgstr "" "De firewall zone controleert welke machines beschikbaar zijn via deze " "verbinding. Selecteer \"Allen Intern\" voor vertrouwde netwerken." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Extern" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPv4 Adresseringsmethode" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3125,19 +3222,19 @@ msgstr "" "ervoor dat {box_name} fungeert als een router, die het configureren van " "clients op dit netwerk regelt en de Internet-verbinding deelt." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automatisch (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Gedeeld" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3145,21 +3242,21 @@ msgstr "" "Optionele waarde. Indien leeg, zal een standaard netmask op basis van het " "adres worden gebruikt." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Optionele waarde." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3168,11 +3265,11 @@ msgstr "" "adresseringsmethode is \"Automatisch\", zullen de DNS-Servers van de DHCP-" "server worden genegeerd." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Tweede DNS Server" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3181,11 +3278,11 @@ msgstr "" "methode is \"Automatisch\", zullen de DNS-Servers van de DHCP-server worden " "genegeerd." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "IPv6 Adresseringsmethode" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3194,27 +3291,27 @@ msgstr "" "De \"Automatische\" methoden zorgen dat {box_name} de configuratie van dit " "netwerk gebruikt waardoor het een client wordt." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automatisch" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automatisch, alleen DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Negeren" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Voorvoegsel" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Waarde tussen 1 en 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3223,7 +3320,7 @@ msgstr "" "adresseringsmethode is \"Automatisch\", zullen de DNS-Servers van de DHCP-" "server worden genegeerd." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3232,54 +3329,54 @@ msgstr "" "methode is \"Automatisch\", zullen de DNS-Servers van de DHCP-server worden " "genegeerd." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- selecteer --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "De zichtbare netwerknaam." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastructuur" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Frequentieband" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanaal" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3287,11 +3384,11 @@ msgstr "" "Optionele waarde. Beperken van draadloos kanaal tot de geselecteerde " "frequentieband. Waarde leeg of 0 betekent automatische selectie." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3302,11 +3399,11 @@ msgstr "" "toegangspunt overeenkomt met degene die hier wordt ingevuld. Voorbeeld: " "00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Authentificatiemodus" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3314,11 +3411,11 @@ msgstr "" "Selecteer WPA indien het netwerk beveiligd is en gebruikerswachtwoorden " "gebruikt om te verbinden." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Open" @@ -3525,7 +3622,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Methode" @@ -3541,6 +3638,7 @@ msgstr "DNS server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Standaard" @@ -3553,7 +3651,7 @@ msgid "This connection is not active." msgstr "Deze verbinding is niet actief." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Security" @@ -3617,13 +3715,13 @@ msgstr "Verbinding" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3666,11 +3764,11 @@ msgstr "Maak..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Virtual Private Network" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3688,14 +3786,14 @@ msgstr "" "mogelijk om de rest van het internetgebruik via {box_name} te leiden, voor " "meer veiligheid en anonimiteit." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" " Download profiel" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "OpenVPN server Inschakelen" @@ -3864,7 +3962,7 @@ msgstr "" "Selecteer een pagekite server. Gebruik \"pagekite.net\" om de standaard " "pagekite.net server te gebruiken." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Serverpoort" @@ -4138,11 +4236,11 @@ msgstr "Nu Uitschakelen" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4152,7 +4250,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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4167,7 +4265,7 @@ msgstr "" "href=\"http://config.privoxy.org\">http://config.privoxy.org/ of http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Gebruik {url} via proxy {proxy} op tcp{kind}" @@ -4176,11 +4274,11 @@ msgstr "Gebruik {url} via proxy {proxy} op tcp{kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "IRC Cliënt" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4198,7 +4296,7 @@ msgstr "" "telefoon kunnen worden gebruikt om te verbinden of de verbinding te " "verbreken." -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your ondersteunde clienttoepassing nodig. " "Radicale kan worden benaderd door elke {box_name} gebruiker." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4325,7 +4423,7 @@ msgstr "" "freedombox.address>) en uw gebruikersnaam. Klikken op de zoekknop zal de " "bestaande kalenders en adresboeken weergeven." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Configuratie van de toegangsrechten is bijgewerkt" @@ -4445,11 +4543,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "Email Cliënt" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4461,7 +4559,7 @@ msgstr "" "van een email applicatie verwacht, inclusief MIME ondersteuning, een " "adresboek, het beheren van mappen, zoeken in berichten en spellingscontrole." -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -4484,7 +4582,7 @@ msgstr "" "(aanbevolen): vul het serverveld in, bijvoorbeeld imaps://imap.example." "com." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4503,13 +4601,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4517,7 +4615,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4572,25 +4670,25 @@ msgstr "Gedeelde map toegevoegd." msgid "Action" msgstr "Acties" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Gedeelde map verwijderd." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Fout bij het installeren van de toepassing: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Gedeelde map bewerkt." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4600,11 +4698,11 @@ msgstr "Fout bij het installeren van de toepassing: {error}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Zoeken op het Internet" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4612,7 +4710,7 @@ msgstr "" "Searx is een privacy-respecterende internet metasearch engine. Het " "aggregeert en toont resultaten van meerdere zoekmachines." -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4620,7 +4718,7 @@ msgstr "" "Searx kan worden gebruikt om tracking en profilering door zoekmachines te " "voorkomen. Het slaat standaard geen cookies op." -#: plinth/modules/searx/__init__.py:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Zoeken op internet" @@ -4655,16 +4753,16 @@ msgstr "" "Sta toe dat deze applicatie wordt gebruikt door iedereen die er toegang toe " "heeft." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Configuratie bijgewerkt." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Beperk console-aanmeldingen (aanbevolen)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4674,11 +4772,11 @@ msgstr "" "\"admin\" inloggen op de console of via SSH. Console gebruikers hebben " "mogelijk toegang tot sommige diensten zonder verdere toestemming." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2Ban (aanbevolen)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4693,7 +4791,7 @@ msgid "Show security report" msgstr "Beveiligingsrapport weergeven" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "Beveiligingsrapport" @@ -4722,12 +4820,12 @@ msgstr "Huidige kwetsbaarheden" msgid "Past Vulnerabilities" msgstr "Kwetsbaarheden in het verleden" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Fout bij beperkte toegang instellen: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Bijgewerkte Beveiligingsconfiguratie" @@ -4763,11 +4861,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Socks5 Proxy" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4777,7 +4875,7 @@ msgstr "" "te beschermen. Het kan gebruikt worden om censuur en het filteren van " "Internet te omzeilen." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4790,7 +4888,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:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4804,25 +4902,25 @@ msgstr "" msgid "Recommended" msgstr "Aanbevolen" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Server" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Server hostnaam of IP adres" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Server poortnummer" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "Wachtwoord dat wordt gebruikt om gegevens te coderen. Moet overeenkomen met " "serverwachtwoord." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "Encryptie methode. Moet overeenkomen met de instelling van de server." @@ -4887,48 +4985,48 @@ msgstr "Er bestaat reeds een gedeelde map met deze naam." msgid "Shares should be either public or shared with at least one group" msgstr "Shares moeten openbaar zijn of gedeeld worden met minimaal één groep" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Gedeelde map toevoegen" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Er zijn momenteel geen bestandsdelingen geconfigureerd." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Schijf pad" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Gedeeld Via" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "Met Groepen" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "openbare toegang" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Gedeelde map toegevoegd." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Gedeelde map toevoegen" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Gedeelde map bewerkt." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Gedeelde map bewerken" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Gedeelde map verwijderd." @@ -4996,43 +5094,43 @@ msgid "Enable or disable snapshots before and after software installation" msgstr "" "Snapshots voor en na de installatie van de software in- of uitschakelen" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Aantal uurlijkse Snapshots" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Bewaar maximaal dit aantal uurlijkse snapshots." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Dagelijkse Snapshots limiet" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Bewaar maximaal dit aantal dagelijkse snapshots." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Wekelijkse Snapshots limiet" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Bewaar maximaal dit aantal wekelijkse snapshots." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Maandelijkse limiet voor Snapshots" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Bewaar maximaal dit aantal maandelijkse snapshots." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Jaarlijkse Snapshots limiet" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5113,11 +5211,11 @@ msgstr "Beheren van Snapshots" msgid "Created snapshot." msgstr "Gemaakte snapshot." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Opslag van Snapshots configuratie is bijgewerkt" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Actiefout: {0} [{1}] [{2}]" @@ -5227,83 +5325,127 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "De bewerking is mislukt." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "De bewerking is afgebroken." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 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:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 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:249 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:252 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:254 msgid "The operation has already been cancelled." msgstr "De bewerking is al geannuleerd." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "Het apparaat is al gekoppeld." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "Het apparaat is niet ge-mount." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "Foutieve hostnaam" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Opslagmap" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Opslagmap" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Public share" +msgid "Samba share" +msgstr "Publieke share" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "De volgende opslagapparaten zijn in gebruik:" @@ -5378,11 +5520,11 @@ msgstr "" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Bestandssynchronisatie" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5395,7 +5537,7 @@ msgstr "" "automatisch dezelfde veranderingen ondergaan op de andere apparaten waarop " "Syncthing draait." -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5412,7 +5554,7 @@ msgstr "" "{box_name} is alleen beschikbaar voor gebruikers die tot de \"admin\"-groep " "behoren." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "Beheer Syncthing toepassing" @@ -5420,11 +5562,11 @@ msgstr "Beheer Syncthing toepassing" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Distributed File Storage" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5437,7 +5579,7 @@ msgstr "" "knooppunten uitvallen, kunnen uw bestanden uit de resterende knooppunten " "worden opgehaald." -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5506,58 +5648,58 @@ msgstr "" "de Tor " "Browser aan." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor-Hidden Service" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Tor Socks Proxy" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Tor relay poort beschikbaar" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 transport geregistreerd" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 transport geregistreerd" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bevestig Tor gebruik met {url} via tcp{kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "Voer een geldige Tor-brug in met deze indeling: [transport] IP: ORPort " "[fingerprint]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Tor Inschakelen" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Gebruik upstream bridges om verbinding te maken met het Tor netwerk" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5568,11 +5710,11 @@ msgstr "" "optie als je Internet Service Provider (ISP) verbindingen met het Tor-" "netwerk blokkeert of censureert. Hierdoor worden de relaismodi uitgeschakeld." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Upstream bridges" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5583,11 +5725,11 @@ msgstr "" "plakken. Momenteel worden de volgende transporten ondersteund; geen, obfs3, " "obfs4 en scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Tor Relay Inschakelen" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5598,11 +5740,11 @@ msgstr "" "bandbreedte delen met het Tor-netwerk. Doe dit alleen als u meer dan 2 " "megabit/s upload- en download bandbreedte ter beschikking heeft." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Tor Bridge Relay inschakelen" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5613,20 +5755,20 @@ msgstr "" "moeilijker om dit knooppunt te censureren. Dit helpt anderen censuur te " "omzeilen." -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Tor Hidden Service Inschakelen" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5634,11 +5776,11 @@ msgstr "" "(zoals iki of chat) kan aanbieden zonder de locatie te onthullen. Deze " "dienst nog niet gebruiken als sterke anonimiteit vereist is." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Download Softwarepakketen via Tor" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5648,7 +5790,7 @@ msgstr "" "binnengehaald. Dit voegt een mate van privacy en veiligheid tijdens software " "downloads toe." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" "Geef ten minste één upstream brug in voor het gebruik van de upstream " @@ -5704,7 +5846,7 @@ msgstr "Een Tor SOCKS poort is beschikbaar op %(box_name)s, op TCP poort 9050." msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5713,29 +5855,19 @@ msgstr "" "daemon voorziet in Bittorrent bestandsdelingdiensten. Houd in gedachten dat " "BitTorrent gebruik niet anoniem is." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Opslagmap" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Map waar downloads worden bewaard. Indien de standaardmap wordt gewijzigd, " -"zorg er dan voor dat de map bestaat en schrijfbaar is voor de \"debian-" -"transmission\" gebruiker." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "News Feed Reader" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5745,7 +5877,7 @@ msgstr "" "om het lezen van nieuws vanaf iedere locatie mogelijk te maken, terwijl het " "op een echte desktop applicatie wil lijken." -#: plinth/modules/ttrss/__init__.py:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5759,7 +5891,7 @@ msgstr "" "\">/ tt-rss pad op de webserver. Het is beschikbaar voor elke gebruiker met een {box_name} login." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -5773,7 +5905,7 @@ msgstr "" "gebruikt, voer dan de URL /tt-rss-app in om te " "verbinden." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Lezen en abonneren op nieuwsfeeds" @@ -5781,7 +5913,7 @@ msgstr "Lezen en abonneren op nieuwsfeeds" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Update" @@ -5855,18 +5987,18 @@ msgstr "Upgrade-proces gestart." msgid "Starting upgrade failed." msgstr "Starten van de upgrade is mislukt." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Gebruikers en Groepen" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5874,7 +6006,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zoek LDAP item \"{search_item}\"" @@ -5883,15 +6015,15 @@ msgstr "Zoek LDAP item \"{search_item}\"" msgid "Access to all services and system settings" msgstr "Toegang tot alle diensten en systeeminstellingen" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "Gebruikersnaam is in gebruik of is gereserveerd." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Toegangsrechten" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5906,20 +6038,20 @@ msgstr "" "ook op het systeem inloggen met SSH en kunnen systeemadministratie doen " "(sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "LDAP gebruiker aanmaken mislukt." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Nieuwe gebruiker aan groep {group} toevoegen mislukt." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Geautoriseerde SSH-sleutels" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -5930,39 +6062,39 @@ msgstr "" "sleutels toevoegen, één op elke regel. Lege regels en regels die beginnen " "met # worden genegeerd." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "LDAP gebruiker hernoemen mislukt." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Gebruiker uit groep verwijderen mislukt." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Gebruiker aan groep toevoegen mislukt." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "Kan de SSH-sleutels niet instellen." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "Kan de enige beheerder in het systeem niet verwijderen." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Wijzigen LDAP gebruikerswachtwoord mislukt." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Toevoegen van gebruiker aan admin groep mislukt." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Consoletoegang beperken is mislukt." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Gebruikersaccount aangemaakt, U bent nu ingelogd" @@ -5978,12 +6110,12 @@ msgstr "Wachtwoord Opslaan" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Nieuwe gebruiker registreren" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Gebruiker verwijderen" @@ -6016,7 +6148,7 @@ msgid "Create Account" msgstr "Account aanmaken" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Gebruikers" @@ -6044,62 +6176,62 @@ msgstr "" msgid "Save Changes" msgstr "Wijzigingen opslaan" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Gebruiker %(username)s aangemaakt." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "Gebruiker %(username)s bijgewerkt." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Gebruiker wijzigen" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "Gebruiker {user} verwijderd." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "Verwijderen van LDAP gebruiker mislukt." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Wijzig wachtwoord" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Wachtwoord succesvol gewijzigd." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Generiek" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Fout tijdens installatie" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "installeren" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "downloaden" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "media wijzigen" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "configuratiebestand: {file}" @@ -6152,12 +6284,12 @@ msgstr "" "(Engelstalig) zodat we deze kunnen verhelpen. Voeg alstublieft het Status Log toe aan de bug-reportage." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "Service %(service_name)s wordt uitgevoerd." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "Service %(service_name)s is niet actief." @@ -6269,6 +6401,10 @@ msgstr "" "Wacht tot %(box_name)s klaar is met de installatie. U kunt de %(box_name)s " "gebruiken als de bewerking klaar is." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Installatie" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6360,19 +6496,15 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Installatie" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Deze toepassing installeren?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Deze toepassing heeft een update nodig. Nu bijwerken?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6380,28 +6512,28 @@ msgstr "" "Een andere installatie of upgrade is reeds uitgevoerd. Wacht een paar " "momenten voordat u het opnieuw probeert." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "Deze toepassing is momenteel niet beschikbaar in uw softwarebron." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Installeer" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Pre-Install bewerkingen worden uitvoerd" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Post-install bewerkingen worden uitgevoerd" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "Installeren van %(package_names)s: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% voltooid" @@ -6414,18 +6546,27 @@ msgstr "Start web cliënt" msgid "Client Apps" msgstr "Cliënttoepassingen" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Toepassing ingeschakeld" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Toepassing uitgeschakeld" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Gujarati" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Map waar downloads worden bewaard. Indien de standaardmap wordt " +#~ "gewijzigd, zorg er dan voor dat de map bestaat en schrijfbaar is voor de " +#~ "\"debian-transmission\" gebruiker." + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN server draait" @@ -7422,9 +7563,6 @@ msgstr "Gujarati" #~ msgid "Enable ikiwiki" #~ msgstr "Ikiwiki Inschakelen" -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Mumble Voice Chat Server" - #~ msgid "Enable Mumble daemon" #~ msgstr "Mumble daemon Inschakelen" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index 587bcf9eb..a990a8e1b 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-11-18 18:04+0000\n" "Last-Translator: Radek Pasiok \n" "Language-Team: Polish /" @@ -682,11 +682,31 @@ msgstr "" "href=\"/_cockpit/\">/_cockpit/. Dostęp do niego mają użytkownicy {box_name} z do grupy administratorów." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Ustawienia główne" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -694,13 +714,13 @@ msgstr "Ustawienia główne" msgid "Configure" msgstr "Konfiguruj" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Nazwa domeny" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Niewłaściwa nazwa domeny" @@ -728,11 +748,11 @@ msgstr "" "twój {box_name}. Musi zaczynać się i kończyć literą albo cyfrą i zawierać " "tylko litery, cyfry i myślnik. Maksymalna długość to 63 znaki." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Niewłaściwa nazwa hosta" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -748,11 +768,11 @@ msgstr "" "zawierać tylko litery, cyfry i myślnik. Maksymalna długość to 63 znaki. " "Maksymalna nazwa domeny to 253 znaki." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Strona startowa serwera Web" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -767,52 +787,52 @@ msgstr "" "niż {box_name} Serwis (Plinth), twoi użytkownicy będą musieli dodać do nazwy " "domeny /plinth lub /freedombox, żeby wyświetlić {box_name} Serwis (Plinth)." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Pokaż zaawansowane aplikacje i cechy" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" "Pokazuje aplikacje i cechy, które wymagają głębszej wiedzy technicznej." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Błąd podczas ustawiania nazwy hosta: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Nazwa hosta ustawiona" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Błąd ustawiania nazwy domeny {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Nazwa domeny ustawiona" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Błąd podczas ustawiania strony domowej serwera web: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Ustawiono stronę domową serwera web" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Błąd podczas zmiany trybu zaawansowanego: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "Wyświetlanie zaawansowanych aplikacji i cech" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Ukrywanie zaawansowanych aplikacji i cech" @@ -820,7 +840,7 @@ msgstr "Ukrywanie zaawansowanych aplikacji i cech" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Współdzielenie plików" @@ -931,16 +951,16 @@ msgstr "Strefa czasowa ustawiona" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "Klient BitTorrent" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge to klient BitTorrent z interfejsem webowym." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from . Standardowe hasło to \"deluge\", powinno ono być zmienione zaraz po " "zalogowaniu." -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Ściągnij pliki korzystając z aplikacji BitTorrent" @@ -976,7 +996,7 @@ msgstr "" "Diagnostyka systemu testuje czy aplikacje i usługi na twiom systemie " "dzialają jak należy." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Test diagnostyczny" @@ -1074,18 +1094,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Aktualizuj ustawienia" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Ustawienie bez zmian" @@ -1134,7 +1154,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Dynamiczna nazwa domeny" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1144,7 +1164,7 @@ msgstr "" "mogą być używanie w adresie URL. Po szczegóły zobacz uaktualnianie URL dla " "przykładowego prowicera." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1154,7 +1174,7 @@ msgstr "" "twój prowider nie wspiera protokołu GnuDIP albo nie jest na liście wtedy " "możesz użyć URL uaktualnienia twojego prowidera." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1162,17 +1182,17 @@ msgstr "" "Proszę nie wpisuj adresu URL tutaj (np. \"https://example.com/\") tylko " "nazwę hosta serwera GnuDIP (np. \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "Domena pod którą chcesz używać aby zobaczyć twój {box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Zaznacz jeśli twój prowider używa certyfikatów podpisanych przez siebie." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1180,11 +1200,11 @@ msgstr "" "Jeśli ta opcja jest zaznaczona to twoja nazwa użytkownika i hasło będą " "używane do podstawowej autentyfikacji HTTP." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "Zostaw puste jeśli chcesz używać aktualnego hasła." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1197,68 +1217,68 @@ msgstr "" "określenia twojego prawdziwego adresu IP. URL powinien zwrócić IP z którego " "klient pochodzi. (przykład: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "Użytkownik który był używany podczas zakladania konta." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Zezwól na Dynamic DNS" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Typ usługi" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "Adres serwera GnuGIP" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Niewłaściwa nazwa użytkownika" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "Uaktualnij URL" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Akceptuj wszystkie certyfikaty SSL" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Użyj podstawowej autentyfikacji HTTP" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Nazwa użytkownika" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Hasło" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Pokaż hasło" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "Adres URL do wyszukiwania publicznego IP" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Proszę wskaż adres do uaktualniania URL lub serwera GnuDIP" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Nazwa użytkowniika GnuDIP" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Domena GnuDIP" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Hasło" @@ -1334,7 +1354,7 @@ msgstr "Ostatnie uaktualnienie" msgid "About" msgstr "Informacje" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1342,15 +1362,15 @@ msgstr "Informacje" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Stan" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Konfiguruj Dynamic DNS" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Status Dynamic DNS" @@ -1358,12 +1378,12 @@ msgstr "Status Dynamic DNS" msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Serwer czatu" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1371,7 +1391,7 @@ msgstr "" "XMPP jest otwartym i ustandaryzowanym protokołem komunikacyjnym. Tu możesz " "uruchomić i skonfigurować własny serwer XMPP zwany ejabberd." -#: plinth/modules/ejabberd/__init__.py:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1644,7 +1664,7 @@ msgstr "Utwórz nowe repozytorium" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" @@ -1730,39 +1750,39 @@ msgstr "Usunąć trwale to archiwum?" msgid "Delete %(name)s" msgstr "Usuń %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Usunięto repozytorium." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Usunięto repozytorium." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Utwórz repozytorium" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1771,8 +1791,8 @@ msgstr "" msgid "Documentation" msgstr "Dokumentacja" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Instrukcja" @@ -1922,7 +1942,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 #, fuzzy #| msgid "Learn more »" msgid "Learn more..." @@ -2046,13 +2066,13 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 #, fuzzy #| msgid "Go to Networks" msgid "Anonymity Network" msgstr "Przejdź do sieci" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2060,25 +2080,25 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktywuj aplikację" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -2091,7 +2111,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2127,18 +2147,18 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki i blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2147,24 +2167,24 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" msgstr "Aplikacje i usługi" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Nazwa konta administratora" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Hasło konta administratora" @@ -2205,33 +2225,33 @@ msgstr "" "Ta akcja spowoduje usunięcie wszystkich postów, stron oraz komentarzy - w " "tym historii zmian. Trwale usunąć wiki lub blog?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "Archive deleted." msgid "{title} deleted." msgstr "Archiwum zostało usunięte." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2240,15 +2260,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2276,11 +2296,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Klient czatu" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2390,36 +2410,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2428,7 +2448,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2438,7 +2458,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2477,7 +2497,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2509,11 +2529,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2524,11 +2544,11 @@ msgstr "Aplikacja zainstalowania." msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2536,7 +2556,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2545,7 +2565,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2587,31 +2607,31 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "Hasło" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Application installed." msgid "Public registrations enabled" msgstr "Aplikacja zainstalowania." -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Application installed." msgid "Public registrations disabled" msgstr "Aplikacja zainstalowania." -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 #, fuzzy #| msgid "Application enabled" msgid "Private mode enabled" msgstr "Aplikacja włączona" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy #| msgid "Application disabled" msgid "Private mode disabled" @@ -2622,13 +2642,13 @@ msgstr "Aplikacja wyłączona" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" msgstr "Zablokowano" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2674,7 +2694,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2683,52 +2703,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Zaktualizowano maksymalną ilość graczy" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Zaktualizowano ustawienia trybu kreatywnego" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "Zaktualizowano ustawienia PVP" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Zaktualizowano ustawienia zniszczeń" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2890,27 +2965,39 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "Hasło do serwera SSH" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2919,6 +3006,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2965,43 +3056,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3009,176 +3100,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Maska sieci" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3385,7 +3476,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3401,6 +3492,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3413,7 +3505,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3466,13 +3558,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3517,11 +3609,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3532,13 +3624,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3666,7 +3758,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3919,18 +4011,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3940,7 +4032,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3949,11 +4041,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3964,7 +4056,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -4177,7 +4269,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4191,13 +4283,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4205,7 +4297,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4258,23 +4350,23 @@ msgstr "" msgid "Action" msgstr "Akcje" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Błąd podczas instalowania aplikacji: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Application disabled" msgid "Share disabled." msgstr "Aplikacja wyłączona" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4284,23 +4376,23 @@ msgstr "Błąd podczas instalowania aplikacji: {error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4332,27 +4424,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4365,7 +4457,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4396,12 +4488,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Błąd ustawienia ograniczonego dostępu: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Zaktualizowano ustawienia bezpieczeństwa" @@ -4429,18 +4521,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4449,7 +4541,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4460,25 +4552,25 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 #, fuzzy #| msgid "Chat Server" msgid "Server" msgstr "Serwer czatu" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4537,48 +4629,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4638,49 +4730,49 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 #, fuzzy #| msgid "Delete %(name)s" msgid "Daily Snapshots Limit" msgstr "Usuń %(name)s" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 #, fuzzy #| msgid "Delete %(name)s" msgid "Weekly Snapshots Limit" msgstr "Usuń %(name)s" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 #, fuzzy #| msgid "Delete %(name)s" msgid "Yearly Snapshots Limit" msgstr "Usuń %(name)s" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4760,13 +4852,13 @@ msgstr "Usuń %(name)s" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "Access rights configuration updated" msgid "Storage snapshots configuration updated" msgstr "Zaktualizowano ustawienia praw dostępu" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4875,86 +4967,124 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bajtów" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, fuzzy, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, fuzzy, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, fuzzy, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, fuzzy, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 #, 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:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "Niewłaściwa nazwa hosta" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" @@ -5028,11 +5158,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5040,7 +5170,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5051,7 +5181,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -5059,11 +5189,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5071,7 +5201,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5127,76 +5257,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Włącz przekaźnik Tora" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5204,43 +5334,43 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor relay" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Włącz przekaźnik Tora" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5291,39 +5421,32 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -5337,14 +5460,14 @@ msgstr "" "href=\"/_cockpit/\">/_cockpit/. Dostęp do niego mają użytkownicy {box_name} z do grupy administratorów." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5352,7 +5475,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5424,18 +5547,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5443,7 +5566,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5452,15 +5575,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5469,59 +5592,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Tworzenie użytkownika LDAP się nie udało." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Nieudane dodawanie użytkownika do grupy admin." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Utworzono konto użytkownika, możesz się teraz zalogować" @@ -5537,12 +5660,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5575,7 +5698,7 @@ msgid "Create Account" msgstr "Utwórz konto" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5601,62 +5724,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "plik konfiguracyjny: {file}" @@ -5715,12 +5838,12 @@ msgstr "" "issues\">Zgłoś błąd abyśmy mogli go naprawić. Dołącz również plik dziennika do raportu błędu." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "Usługa %(service_name)s jest uruchomiona." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "Usługa %(service_name)s nie jest uruchomiona." @@ -5839,6 +5962,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5933,46 +6060,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5987,15 +6110,15 @@ msgstr "Uruchom klienta przeglądarkowego" msgid "Client Apps" msgstr "Klient czatu" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Aplikacja włączona" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Aplikacja wyłączona" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index d75be5be7..8f501b8bc 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-12-16 22:57+0000\n" "Last-Translator: adaragao \n" "Language-Team: Portuguese Para restaurar um backup num novo %(box_name)s precisa das credenciais " -"de SSH e, se escolhida, a frase-chave de encriptação." +"As credenciais para este repositório estão armazenadas no teu %(box_name)s. " +"
Para restaurar um backup num novo %(box_name)s precisa das " +"credenciais de SSH e, se escolhida, a frase-chave de encriptação." #: plinth/modules/backups/templates/backups_add_remote_repository.html:43 msgid "Create Location" msgstr "Criar Localização" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "Criar Repositório" @@ -368,9 +368,9 @@ msgid "Delete this archive permanently?" msgstr "Apagar este arquivo permanentemente?" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "Nome" @@ -624,9 +624,9 @@ msgstr "Habilitar DNSSEC" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "Configuração atualizada" @@ -634,11 +634,11 @@ msgstr "Configuração atualizada" msgid "Cockpit" msgstr "Cockpit" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "Administração do servidor" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -647,18 +647,38 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, 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:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Configuração Geral" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -666,13 +686,13 @@ msgstr "Configuração Geral" msgid "Configure" msgstr "Configurar" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Nome de Domínio" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Nome de domínio inválido" @@ -710,11 +730,11 @@ msgstr "" "cada etiqueta deve ser 63 caracteres ou menos. O comprimento total do nome " "de domínio deve ser 253 caracteres ou menos." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, fuzzy, python-brace-format #| msgid "" #| "Domain name is the global name by which other machines on the Internet " @@ -738,11 +758,11 @@ msgstr "" "cada etiqueta deve ser 63 caracteres ou menos. O comprimento total do nome " "de domínio deve ser 253 caracteres ou menos." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -752,53 +772,53 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "Mostrar apps e funcionalidades que requerem conhecimento mais técnico." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Nome do domínio definido" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Definir página principal do servidor" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -806,7 +826,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -906,23 +926,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -940,7 +960,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -1028,18 +1048,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Definição inalterada" @@ -1084,46 +1104,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Nome de Domínio" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1132,70 +1152,70 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 #, fuzzy #| msgid "Service Discovery" msgid "Service Type" msgstr "Descoberta do Serviço" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1254,7 +1274,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1262,15 +1282,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Estado" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1278,18 +1298,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1532,7 +1552,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository not found" msgid "Repository's owner name" @@ -1615,39 +1635,39 @@ msgstr "Apagar este arquivo permanentemente?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Repositório não encontrado" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Repositório não encontrado" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create new repository" msgid "Edit repository" msgstr "Criar novo repositório" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1656,8 +1676,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -1796,7 +1816,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1880,8 +1900,8 @@ msgid "" "Search for past discussions or post a new query on our discussion forum." msgstr "" -"Pesquise por discussões ou publique uma nova questão no nosso fórum." +"Pesquise por discussões ou publique uma nova questão no nosso fórum." #: plinth/modules/help/templates/help_support.html:42 msgid "" @@ -1916,11 +1936,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1928,25 +1948,25 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Ativar aplicação" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1959,7 +1979,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2000,18 +2020,18 @@ msgstr "" msgid "ikiwiki" msgstr "Ativar tempo da rede" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2020,24 +2040,24 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" msgstr "Serviços e Aplicações" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -2076,33 +2096,33 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "Archive deleted." msgid "{title} deleted." msgstr "Arquivo apagado." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2111,15 +2131,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2146,11 +2166,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2259,36 +2279,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2297,7 +2317,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2307,7 +2327,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2346,7 +2366,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2379,13 +2399,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 #, fuzzy #| msgid "Applications" msgid "Public registration enabled" msgstr "Aplicações" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy #| msgid "Applications" msgid "Public registration disabled" @@ -2396,11 +2416,11 @@ msgstr "Aplicações" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2408,7 +2428,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2417,7 +2437,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2457,29 +2477,29 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Applications" msgid "Public registrations enabled" msgstr "Aplicações" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Applications" msgid "Public registrations disabled" msgstr "Aplicações" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 #, fuzzy #| msgid "Applications" msgid "Private mode enabled" msgstr "Aplicações" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy #| msgid "Applications" msgid "Private mode disabled" @@ -2490,11 +2510,11 @@ msgstr "Aplicações" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2542,7 +2562,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2551,60 +2571,115 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "Configuração atualizada" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2772,27 +2847,39 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "Password do servidor SSH" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2801,6 +2888,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2847,43 +2938,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2891,176 +2982,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3267,7 +3358,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3283,6 +3374,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3295,7 +3387,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3348,13 +3440,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3399,11 +3491,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3414,13 +3506,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3548,7 +3640,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3789,18 +3881,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3810,7 +3902,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3819,11 +3911,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3834,7 +3926,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your (for Android phones)." msgstr "" "Para fazer chamadas SIP, uma aplicação cliente é necessária. As aplicações " -"clientes disponíveis incluem a Jitsi (" -"para computadores) e aCSipSimple (para Android)." +"clientes disponíveis incluem a Jitsi " +"(para computadores) e aCSipSimple (para Android)." #: plinth/modules/repro/__init__.py:55 msgid "" @@ -4029,11 +4121,11 @@ msgstr "" msgid "Roundcube" msgstr "" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4041,7 +4133,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 msgid "" "You can access Roundcube from /roundcube. Provide the username and password of the email account " @@ -4051,7 +4143,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4065,13 +4157,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4079,7 +4171,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4132,23 +4224,23 @@ msgstr "Nome do arquivo" msgid "Action" msgstr "Aplicações" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Erro a instalar a aplicação: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Applications" msgid "Share disabled." msgstr "Aplicações" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4158,23 +4250,23 @@ msgstr "Erro a instalar a aplicação: {error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4206,29 +4298,29 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "Permitir o uso desta aplicação por todos." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 #, fuzzy #| msgid "Configuration updated" msgid "Configuration updated." msgstr "Configuração atualizada" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4241,7 +4333,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4272,13 +4364,13 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error setting restricted access: {exception}" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -4308,18 +4400,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4328,7 +4420,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4339,23 +4431,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4414,48 +4506,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4513,43 +4605,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4625,13 +4717,13 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "Configuration updated" msgid "Storage snapshots configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4732,85 +4824,123 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 #, 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:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid domain name" +msgid "Invalid directory name." +msgstr "Nome de domínio inválido" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4877,11 +5007,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4889,7 +5019,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4900,7 +5030,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4908,11 +5038,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4920,7 +5050,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4976,78 +5106,78 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 #, fuzzy #| msgid "Enable network time" msgid "Enable Tor relay" msgstr "Ativar tempo da rede" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5055,43 +5185,43 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable service discovery" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Permitir descoberta do serviço" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5142,53 +5272,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5196,7 +5319,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5268,18 +5391,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5287,7 +5410,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5296,15 +5419,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5313,59 +5436,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5381,12 +5504,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5416,7 +5539,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5442,64 +5565,64 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "Definição inalterada" -#: plinth/package.py:167 +#: plinth/package.py:165 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -5543,13 +5666,13 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, fuzzy, python-format #| msgid "Service discovery server is running" msgid "Service %(service_name)s is running." msgstr "O Servidor da descoberta do serviço está a correr" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, fuzzy, python-format #| msgid "Service discovery server is not running" msgid "Service %(service_name)s is not running." @@ -5662,6 +5785,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5746,46 +5873,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5798,19 +5921,19 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 #, fuzzy #| msgid "Applications" msgid "Application enabled" msgstr "Aplicações" -#: plinth/views.py:183 +#: plinth/views.py:184 #, fuzzy #| msgid "Applications" msgid "Application disabled" msgstr "Aplicações" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 0860f76d8..46d636773 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-07-22 17:06+0000\n" "Last-Translator: Igor \n" "Language-Team: Russian /" @@ -708,11 +708,33 @@ msgstr "" "веб-сервере. Он может быть доступен на любому " "пользователю {box_name}, принадлежащему к группе админов." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Точка доступа" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Общие настройки" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -720,13 +742,13 @@ msgstr "Общие настройки" msgid "Configure" msgstr "Настроить" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Доменное имя" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Недопустимое имя домена" @@ -755,11 +777,11 @@ msgstr "" "букв или цифр, внутри так же могут быть цифры, буквы или дефисы. Общая " "длинна должна быть не более 63 символов." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Недопустимое имя хоста" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -775,11 +797,11 @@ msgstr "" "должны быть 63 символов или меньше. Общая длина имени домена должно быть 253 " "символов или меньше." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Домашняя страница веб-сервера" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -795,52 +817,52 @@ msgstr "" "(Plinth), ваши пользователи должны явно указывать /plinth или /freedombox " "для доступа к сервису {box_name} (Plinth)." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Показывать дополнительные приложения и функции" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Ошибка параметра hostname: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Смена имени хоста" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Ошибка параметра имени домена: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Смена доменного имени" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Ошибка параметра домашней страницы веб-сервера: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Установка домашней страницы веб-сервера" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Ошибка параметра имени домена: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -848,7 +870,7 @@ msgstr "" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Обмен Файлами" @@ -966,16 +988,16 @@ msgstr "Смена часового пояса" msgid "Deluge" msgstr "Delugе" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "BitTorrent Веб Клиент" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge это клиент BitTorrent, имеющий веб-интерфейс." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from на веб-сервере. Пароль по умолчанию 'deluge', но вы должны " "войти и изменить его сразу же после включения этой службы." -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Загружать файлы используя приложения BitTorrent" @@ -1011,7 +1033,7 @@ msgstr "" "Диагностический тест системы проведёт ряд проверок, чтобы убедиться, что " "приложения и службы работают как положено." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Диагностический тест" @@ -1108,18 +1130,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Обновить настройки" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Настройки без изменений" @@ -1169,7 +1191,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Доменное имя" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1179,7 +1201,7 @@ msgstr "" "использоваться в URL-адресе. Для получения дополнительной информации " "смотрите примеры обновления URL." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1189,7 +1211,7 @@ msgstr "" "ваш провайдер не поддерживает протокол GnudIP или поставщик не указан, вы " "можете использовать URL-адрес обновления вашего провайдера." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1197,18 +1219,18 @@ msgstr "" "Пожалуйста, не вводите URL здесь (как «https://example.com/»), только имя " "хоста сервера GnuDIP (как \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "Общее доменное имя для подключения к вашему {box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Используйте этот параметр, если ваш провайдер использует самостоятельно " "подписанные сертификаты." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1216,11 +1238,11 @@ msgstr "" "Если выбран этот параметр, будет использоваться имя пользователя и пароль " "для обычной проверки подлинности HTTP." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "Оставьте это поле пустым, если вы хотите сохранить ваш текущий пароль." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1233,68 +1255,68 @@ msgstr "" "для определения настоящего IP адреса. URL-адрес должен просто вернуть IP " "(пример: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "Имя пользователя, которое использовалось при создании учетной записи." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Включение динамического DNS" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Тип службы" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "Адрес сервера GnuDIP" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Недопустимое имя сервера" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "Обновление URL-адреса" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Принимать все SSL-сертификаты" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Использовать базовую аутентификацию HTTP" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Имя пользователя" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Пароль" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Показать пароль" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "URL-адрес для поиска публичного IP" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Просьба предоставьте URL-адрес или адрес сервера GnuDIP" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Просьба представить имя пользователя GnuDIP" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Просьба предоставить имя домена GnuDIP" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Введите пароль" @@ -1371,7 +1393,7 @@ msgstr "Последнее обновление" msgid "About" msgstr "О службе" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1379,15 +1401,15 @@ msgstr "О службе" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Статус" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Настройка динамического DNS" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Состояние динамического DNS" @@ -1395,12 +1417,12 @@ msgstr "Состояние динамического DNS" msgid "ejabberd" msgstr "еjabberd" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Чат-сервер" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1408,7 +1430,7 @@ msgstr "" "XMPP является открытым и стандартизированным коммуникационным протоколом. " "Здесь вы можете запустить и настроить сервер XMPP, называемый ejabberd." -#: plinth/modules/ejabberd/__init__.py:58 +#: plinth/modules/ejabberd/__init__.py:60 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the web " @@ -1500,18 +1522,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:50 #: plinth/modules/i2p/templates/i2p.html:26 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:31 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:30 #: plinth/modules/snapshot/templates/snapshot.html:27 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:43 -#: plinth/templates/app.html:98 +#: plinth/templates/app.html:70 msgid "Configuration" msgstr "Конфигурация" -#: plinth/modules/ejabberd/views.py:78 +#: plinth/modules/ejabberd/views.py:79 msgid "Message Archive Management enabled" msgstr "Управление архивом сообщение включено" -#: plinth/modules/ejabberd/views.py:82 +#: plinth/modules/ejabberd/views.py:83 msgid "Message Archive Management disabled" msgstr "Управление архивом сообщений выключено" @@ -1560,7 +1582,7 @@ msgstr "Включено" #: plinth/modules/firewall/templates/firewall.html:66 #: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/forms.py:69 plinth/templates/cards.html:49 +#: plinth/modules/networks/forms.py:63 plinth/templates/cards.html:49 msgid "Disabled" msgstr "Выключено" @@ -1641,11 +1663,11 @@ msgstr "Установка Завершена" msgid "Gitweb" msgstr "" -#: plinth/modules/gitweb/__init__.py:45 +#: plinth/modules/gitweb/__init__.py:47 msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/__init__.py:48 +#: plinth/modules/gitweb/__init__.py:50 msgid "" "Git is a distributed version-control system for tracking changes in source " "code during software development. Gitweb provides a web interface to Git " @@ -1656,13 +1678,13 @@ msgid "" "the world." msgstr "" -#: plinth/modules/gitweb/__init__.py:55 +#: plinth/modules/gitweb/__init__.py:57 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1697,7 +1719,7 @@ msgstr "Создать новый репозиторий" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" @@ -1792,41 +1814,41 @@ msgstr "Окончательно удалить этот снимок?" msgid "Delete %(name)s" msgstr "Удаление %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Репозиторий удалён." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Произошла ошибка во время настройки." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Репозиторий удалён." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Создать репозиторий" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Произошла ошибка во время настройки." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} удален." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Не удалось удалить {name}: {error}" @@ -1835,8 +1857,8 @@ msgstr "Не удалось удалить {name}: {error}" msgid "Documentation" msgstr "Документация" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Руководство" @@ -1995,7 +2017,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Подробнее..." @@ -2129,11 +2151,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Anonymity Network" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2141,7 +2163,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the Wiki ." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Включить приложение" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -2180,7 +2202,7 @@ msgstr "Запуск" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2216,11 +2238,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Вики и Блог" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2238,7 +2260,7 @@ msgstr "" "комментарии и RSS-каналы. Когда включен, блоги и вики доступны по адресу /ikiwiki (после создания)." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2252,22 +2274,22 @@ msgstr "" "href=\"{users_url}\">Конфигурация пользователей вы можете изменить " "разрешения или добавить новых пользователей." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Просмотр и редактирование приложений Wiki" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Тип" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Имя учетной записи администратора" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Пароль учетной записи администратора" @@ -2308,33 +2330,33 @@ msgstr "" "Это действие приведет к удалению всех постов, страниц и комментариев, " "включая историю изменений. Окончательно удалить этот вики или блог?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Создать вики {name}." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Не удалось создать вики: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Созданный блог {name}." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Не удалось создать блог: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} удален." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2344,15 +2366,15 @@ msgstr "Не удалось удалить {name}: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Сервер Gobby" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted это сервер для Gobby, совместный текстовый редактор." -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2384,11 +2406,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Чат-клиент" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2509,7 +2531,7 @@ msgstr "" "Не настроено ни одного домена. Настройте домены, чтобы иметь возможность " "получить сертификаты для них." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2518,29 +2540,29 @@ msgstr "" "Сертификат успешно отменен для домена {domain}. Для принятия изменений может " "потребоваться время." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Не удалось отозвать сертификат для домена {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Сертификат успешно получен для домена {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Не удалось получить сертификат для домена {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Сертификат успешно удален для домена {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Не удалось удалить сертификат для домена {domain}: {error}" @@ -2549,7 +2571,7 @@ msgstr "Не удалось удалить сертификат для доме msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2566,7 +2588,7 @@ msgstr "" "одном сервере Matrix могут общаться с пользователями на всех остальных " "серверах." -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:" "domainname." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2618,7 +2640,7 @@ msgstr "" " установки в настоящее время не поддерживается.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2663,11 +2685,11 @@ msgstr "" " Encrypt, чтобы получить его.\n" " " -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Публичная регистрация включена" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Публичная регистрация отключена" @@ -2676,11 +2698,11 @@ msgstr "Публичная регистрация отключена" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2692,7 +2714,7 @@ msgstr "" "редактируемого сайта. Вы можете использовать mediawiki как сайт, делать " "заметки или работать совместно с друзьями." -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2707,7 +2729,7 @@ msgstr "" "перейдя в раздел Special:CreateAccount." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2752,23 +2774,23 @@ msgstr "" "записи, смогут читать или писать в вики. Публичные регистрации также будут " "отключены." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Пароль обновлен" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Публичная регистрация включена" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Публичная регистрация отключена" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Режим приватности включен" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Режим приватности выключен" @@ -2777,11 +2799,11 @@ msgstr "Режим приватности выключен" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Песочница" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2838,7 +2860,7 @@ msgstr "" "Когда выключено, игроки не могут умереть или получить урон любого рода." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Адрес" @@ -2847,32 +2869,89 @@ msgstr "Адрес" msgid "Port" msgstr "Порт" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Максимум игроков обновлен" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Конфигурация творческого режима обновлена" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "Конфигурация PVP обновлена" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Конфигурация урона обновлена" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Mumble Сервер Голосового Чата" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "MLDonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "Файлообмен P2P" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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 " @@ -2883,7 +2962,7 @@ msgstr "" "пиринговый сетях, таких, как eDonkey, Kademlia, Overnet, BitTorrent и " "DirectConnect." -#: plinth/modules/mldonkey/__init__.py:48 +#: plinth/modules/mldonkey/__init__.py:50 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 " @@ -2894,7 +2973,7 @@ msgstr "" "это с помощью любого мобильного или десктопного фронтэнда или через telnet. " "Смотри руководство." -#: plinth/modules/mldonkey/__init__.py:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." @@ -2902,7 +2981,7 @@ msgstr "" "В {box_name}, загруженные Файлы могут быть найдены в /var/lib/mldonkey/ " "directory." -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Загрузить файлы, используя приложение eDonkey" @@ -3080,15 +3159,15 @@ msgstr "Опубликованый ключ на сервере ключей." msgid "Error occurred while publishing key." msgstr "Произошла ошибка при публикации ключа." -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Голосовой чат" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3096,7 +3175,7 @@ msgstr "" "Mumble это шифрованый чат с высоким качеством голоса, низкой задержкой и " "открытым исходным кодом." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3106,6 +3185,18 @@ msgstr "" "64738. На Клиенты вы можете найти " "клиенты для вашего компьютера и Android устройств." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "Пароль SSH-сервера" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3114,6 +3205,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Пароль успешно изменён." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Название услуги" @@ -3170,23 +3267,23 @@ msgstr "Использовать DNSSEC на IPv{kind}" msgid "Connection Type" msgstr "Тип подключения" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Имя подключения" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Физический интерфейс" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "К этому подключению должно быть привязано сетевое устройство." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Зона Брандмауэра" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3194,21 +3291,21 @@ msgstr "" "Зона брандмауэра будет контролировать службы, доступные через этот " "интерфейс. Выбирайте Внутренний только в доверенных сетях." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Внешний" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Внутренний" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "Метод адресации IPv4" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3219,19 +3316,19 @@ msgstr "" "сети в качестве клиента. \"Общий\" метод позволяет {box_name} выступать как " "роутер, настраивая клиентов в сети, разделяя подключение к интернету." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Автоматически (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Общее" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Маска сети" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3239,21 +3336,21 @@ msgstr "" "Необязательное значение. Если оставить пустым, будет использоваться маска " "подсети по умолчанию, основанная на адресе." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Шлюз" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Необязательное значение." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS-сервер" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3261,11 +3358,11 @@ msgstr "" "Необязательное значение. Если задано это значение, и метод адресации IPv4 " "«Автомат», предоставляемые DHCP-сервером DNS-серверы будут игнорироваться." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Второй DNS-сервер" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3273,11 +3370,11 @@ msgstr "" "Необязательное значение. Если задано это значение и метод адресации IPv4 " "«Автомат», предоставляемые DHCP-сервером DNS-серверы будут игнорироваться." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "Метод адресации IPv6" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3286,27 +3383,27 @@ msgstr "" "Метод \"Автоматически\" позволит получить {box_name} конфигурацию этой сети, " "что сделает его клиентом." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Автоматически" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Автоматически, только DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Игнорировать" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Префикс" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Значение от 1 до 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3315,7 +3412,7 @@ msgstr "" "«Автоматически», предоставляемые DHCP-сервером DNS-серверы будут " "игнорироваться." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3324,54 +3421,54 @@ msgstr "" "«Автоматически», предоставляемые DHCP-сервером DNS-серверы будут " "игнорироваться." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- Выберите --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Отображаемое имя сети." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Режим" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Инфраструктура" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Точка доступа" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Беспроводная Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Полоса частот" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "А (5 ГГц)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 ГГц)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Канал" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3379,11 +3476,11 @@ msgstr "" "Необязательное значение. Ограничение беспроводного канала в выбранном " "диапазоне частот. Оставьте пустым или укажите 0 для автоматического выбора." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3393,11 +3490,11 @@ msgstr "" "подключении к точке доступа, подключатся только по BSSID. Пример: 00:11:22:" "aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Режим проверки подлинности" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3405,11 +3502,11 @@ msgstr "" "Выберите WPA, если беспроводная сеть защищена и требует от клиентов пароль " "для подключения." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Open" @@ -3616,7 +3713,7 @@ msgstr "IРv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Метод" @@ -3632,6 +3729,7 @@ msgstr "DNS-сервер" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "По умолчанию" @@ -3644,7 +3742,7 @@ msgid "This connection is not active." msgstr "Это подключение не активно." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Безопасность" @@ -3706,13 +3804,13 @@ msgstr "Интервал" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3757,11 +3855,11 @@ msgstr "Создать..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Виртуальная частная сеть" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3779,14 +3877,14 @@ msgstr "" "также получить доступ к остальной части Интернет через {box_name} для " "дополнительной безопасности и анонимности." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "Скачать профиль" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "Включить сервер OpenVPN" @@ -3959,7 +4057,7 @@ msgstr "" "Выберите свой сервер pagekite. Выберите \"pagekite.net\", чтобы использовать " "сервер по умолчанию - pagekite.net." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Порт сервера" @@ -4228,11 +4326,11 @@ msgstr "Завершить работу сейчас" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Web-прокси" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4243,7 +4341,7 @@ msgstr "" "HTTP, контроля доступа и удаления рекламы и прочего неприятного мусора в " "интернете. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4258,7 +4356,7 @@ msgstr "" "config.privoxy.org\">http://config.privoxy.org или http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Доступ к {url} с прокси {proxy} на tcp{kind}" @@ -4267,11 +4365,11 @@ msgstr "Доступ к {url} с прокси {proxy} на tcp{kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "IRC-клиент" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4288,7 +4386,7 @@ msgstr "" "клиентов. Для этого могут использоваться как клиенты настольного компьютера, " "так и мобильные версии." -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your . Radicale будет доступен всем пользователям " "{box_name}." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4419,7 +4517,7 @@ msgstr "" "address>) и ваше имя пользователя. Нажав на кнопку поиска будет список " "существующих календарей и адресных книг." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Конфигурация прав доступа обновлена" @@ -4539,11 +4637,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "Почтовый клиент" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4555,7 +4653,7 @@ msgstr "" "которую вы ожидаете от почтового клиента, включая поддержку MIME, адресную " "книгу, управление папками, поиск сообщений и проверку орфографии." -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -4578,7 +4676,7 @@ msgstr "" "(рекомендуется) заполните поле сервера, например imaps://imap.example." "com." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4598,13 +4696,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4612,7 +4710,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4665,25 +4763,25 @@ msgstr "Общий ресурс добавлен." msgid "Action" msgstr "Действия" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Общий ресурс удалён." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Ошибка извлечения устройства: {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Общий ресурс изменён." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -4693,11 +4791,11 @@ msgstr "Ошибка извлечения устройства: {error_message}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Веб-поиск" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4705,7 +4803,7 @@ msgstr "" "Searx - это конфиденциальная метапоисковая система. Она агрегирует и " "показывает результаты с разных поисковых систем." -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4713,7 +4811,7 @@ msgstr "" "Searx может быть использован, чтобы избежать отслеживания и профилирования " "поисковыми системами. Она не хранит никаких файлов cookie по умолчанию." -#: plinth/modules/searx/__init__.py:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Поиск в интернете" @@ -4747,16 +4845,16 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Конфигурация обновлена." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Ограничение консольного входа (рекомендуется)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4767,11 +4865,11 @@ msgstr "" "могут иметь возможность доступа к некоторым службам без дополнительного " "разрешения." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2ban (рекомендуется)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4788,7 +4886,7 @@ msgid "Show security report" msgstr "Безопасность" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4821,12 +4919,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Ошибка настройки ограничения доступа: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Обновлена настройка безопасности" @@ -4862,11 +4960,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Socks5 Прокси" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4876,7 +4974,7 @@ msgstr "" "защитить ваш интернет-трафик. Он может использоваться для обхода Интернет-" "фильтрации и цензуры." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4888,7 +4986,7 @@ msgstr "" "к серверу Shadowsocks. Он также запускать SOCKS5 прокси.Локальные устройства " "могут подключиться к этому прокси, и их данные будут зашифрованы." -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4901,25 +4999,25 @@ msgstr "" msgid "Recommended" msgstr "Рекомендуется" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Сервер" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Имя или IP адрес сервера" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Номер порта сервера" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "Пароль, используемый для шифрования данных. Должен совпадать с паролем " "сервера." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "Метод шифрования. Должен соответствовать параметру на сервере." @@ -4991,48 +5089,48 @@ msgstr "Общий ресурс с таким именем уже существ msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Добавить общий ресурс" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Нет настроенных общих ресурсов." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Путь на диске" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Общий ресурс через" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "С группами" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Общий ресурс добавлен." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Добавить общий ресурс" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Общий ресурс изменён." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Редактировать общий ресурс" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Общий ресурс удалён." @@ -5106,43 +5204,43 @@ msgid "Enable or disable snapshots before and after software installation" msgstr "" "Включить или отключить снапшоты до и после установки программного обеспечения" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Часовой лимит снапшотов" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Хранить максимум столько ежечасных снапшотов." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Дневной лимит снапшотов" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Хранить максимум столько ежедневных снапшотов." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Недельный лимит снапшотов" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Хранить максимум столько еженедельных снапшотов." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Месячный лимит снапшотов" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Хранить максимум столько ежемесячных снапшотов." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Готовой лимит снапшотов" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5223,11 +5321,11 @@ msgstr "Управление снапшотами" msgid "Created snapshot." msgstr "Создан снимок." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Настройки хранения снапшотов обновлены" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Ошибка действий: {0}[{1}][{2}]" @@ -5341,84 +5439,130 @@ msgstr "" "{box_name}. Вы можете видеть, какие носители используются, монтировать и " "размонтировать подключаемые носители, увеличивать корневой раздел итп." -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} байт" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} КиБ" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Миб" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Гиб" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Тиб" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "Операция не удалась." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "Операция была отменена." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "Устройство уже отключается." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Операция не поддерживается из-за отсутствия поддержки драйвера или утилиты." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "Время операции вышло." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "Попытка отключения устройства, которое используется." -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "Операция уже отменена." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "Отсутствует авторизация для выполнения запрошенной операции." -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "Устройство уже подключено." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "Устройство не подключено." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "Использование запрошенной опции не разрешено." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "Устройство подключено другим пользователем." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "Недопустимое имя хоста" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Папка для загрузок" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "Устройство подключено другим пользователем." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Папка для загрузок" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "Опубликовать ключ" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Используются следующие устройства хранения:" @@ -5493,11 +5637,11 @@ msgstr "Ошибка извлечения устройства: {error_message}" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Синхронизация файлов" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5509,7 +5653,7 @@ msgstr "" "или удаление файлов на одном устройстве будет автоматически реплицироваться " "на все другие устройства, на которых работает Syncthing." -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5527,7 +5671,7 @@ msgstr "" "собственный набор папок. Веб-интерфейс доступен только для пользователей, " "принадлежащих к группе «admin»." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "Администрирование приложения Syncthing" @@ -5535,11 +5679,11 @@ msgstr "Администрирование приложения Syncthing" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Распределенное Хранилище Файлов" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5551,7 +5695,7 @@ msgstr "" "распределенной сети узлов хранения файлов. Если некоторые узлы будут " "недоступны, вы можете получить ваши файлы от оставшихся узлов." -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5619,58 +5763,58 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Скрытый сервис Tor" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Tor Socks прокси" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Ретранслятор Tor типа мост" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Доступен порт трансляции Tor" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 транспорт зарегестрирован" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 транспорт зарегистрирован" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Доступ к {url} по tcp{kind} через Tor" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Подтверждение использования Tor в {url} по tcp {kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "Введите действительный мост с этим форматом: [transport] IP:ORPort " "[fingerprint]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Включить Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Использовать upstream bridges для подключения к сети Tor" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5680,11 +5824,11 @@ msgstr "" "к сети Tor. Используйте эту опцию, если ваш поставщик услуг Интернета (ISP) " "блокирует или цензурирует подключения к сети Tor. Это отключит режим relay." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Upstream мосты" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5694,11 +5838,11 @@ msgstr "" "org/\">https://bridges.torproject.org/и скопировать/вставить информацию " "сюда. В данное время поддерживаются «none», «obfs3», «obfs4» и «scamblesuit»." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Включить ретранслятор Tor" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5709,11 +5853,11 @@ msgstr "" "часть пропускной способности сети Tor. Сделайте это, если у вас более ширина " "канала более 2Мбит/c." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Ретранслятор Tor типа мост" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5723,20 +5867,20 @@ msgstr "" "общественной базы данных ретрансляции Tor. Это помогает другим обойти " "цензуру." -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Включить скрытый сервис Tor" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5744,11 +5888,11 @@ msgstr "" "чат) не раскрывая его расположение. Не используйте это для повышения " "анонимности." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Скачать пакеты программного обеспечения через Tor" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5758,7 +5902,7 @@ msgstr "" "установки и обновления. Это добавляет определенную степень безопасности и " "конфиденциальности во время загрузки программного обеспечения." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "Укажите по крайней мере один upstream bridge чтобы использовать их." @@ -5812,7 +5956,7 @@ msgstr "Порт Tor SOCKS вашего %(box_name)s доступен по по msgid "Transmission" msgstr "Transmissiоn" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5821,29 +5965,19 @@ msgstr "" "обрабатывает обмен файлами Bitorrent. Обратите внимание, что BitTorrent не " "является анонимным." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Папка для загрузок" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Каталог, где хранятся загрузки. Если изменить каталог по умолчанию, " -"убедитесь, что новый каталог существует и доступен для записи пользователем " -"\"debian-transmission\" ." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Чтение ленты новостей" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5852,7 +5986,7 @@ msgstr "" "Tiny Tiny RSS это новый (RSS/Atom) агрегатор новостей, позволяющий читать " "новости из любого места, так же удобно, как и в настольных приложениях." -#: plinth/modules/ttrss/__init__.py:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5865,7 +5999,7 @@ msgstr "" "Когда включен, Tiny Tiny RSS доступен по адресу /tt-rss. Он доступен всем пользователям {box_name}." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -5879,7 +6013,7 @@ msgstr "" "Tiny RSS используйте URL / tt-rss-app для " "подключения." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Чтение и подписка на ленты новостей" @@ -5887,7 +6021,7 @@ msgstr "Чтение и подписка на ленты новостей" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Обновление" @@ -5963,18 +6097,18 @@ msgstr "Начался процесс обновления." msgid "Starting upgrade failed." msgstr "Сбой при запуске обновления." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Пользователи и группы" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5982,7 +6116,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Проверьте запись LDAP \"{search_item}\"" @@ -5991,15 +6125,15 @@ msgstr "Проверьте запись LDAP \"{search_item}\"" msgid "Access to all services and system settings" msgstr "Доступ ко всем сервисам и настройкам системы" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "Имя пользователя уже занято." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Разрешения" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6013,20 +6147,20 @@ msgstr "" "Пользователи в группе администратора имеют доступ ко всем службам. Они также " "могут войти в систему через SSH и иметь административные привилегии (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Создание пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Не удалось добавить нового пользователя в группу {group}." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Авторизованные SSH ключи" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6037,39 +6171,39 @@ msgstr "" "на каждой строке. Пустые строки и строки, начинающиеся с # будут " "игнорироваться." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "Переименование пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Не удалось удалить пользователя из группы." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Не удалось добавить пользователя в группу." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "Не удалось задать ключи SSH." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "Невозможно удалить единственного администратора в системе." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Изменение LDAP пароля пользователя не удалось." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Не удалось добавить нового пользователя в группу администратора." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Не удалось ограничить доступ к консоли." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Учетная запись пользователя создана, теперь вы вошли" @@ -6085,12 +6219,12 @@ msgstr "Сохранить пароль" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Создать пользователя" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Удаление пользователя" @@ -6123,7 +6257,7 @@ msgid "Create Account" msgstr "Создать учетную запись" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Пользователи" @@ -6151,62 +6285,62 @@ msgstr "" msgid "Save Changes" msgstr "Сохранить изменения" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Пользователь %(username)s создан." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "Пользователь %(username)s обновлен." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Редактирование пользователя" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "Пользователь {user} удален." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "Сбой при удалении LDAP пользователя." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Смена пароля" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Пароль успешно изменён." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPоE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Универсальный" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Ошибка во время установки" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "Установка" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "Загрузка" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "изменение медиа" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "Файл настроек: {file}" @@ -6257,12 +6391,12 @@ msgstr "" "пожалуйста, прикрепите Лог состояния к " "отчету об ошибке." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "Выполняется служба %(service_name)s." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "Служба %(service_name)s не запущена." @@ -6374,6 +6508,10 @@ msgstr "" "Пожалуйста, дождитесь %(box_name)s чтобы закончить установку. Вы можете " "начать использовать ваш %(box_name)s после того, как это делается." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Установка" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6467,19 +6605,15 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Установка" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Установить это приложение?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Это приложение нуждается в обновлении. Обновить сейчас?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6487,28 +6621,28 @@ msgstr "" "Другая установка или обновление уже запущенны. Пожалуйста, подождите " "несколько минут перед повторной попыткой." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "Это приложение в настоящее время недоступно для вашего дистрибутива." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Установка" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Выполнение операции предварительной установки" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Выполнение операции после установки" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "Установка %(package_names)s: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% завершено" @@ -6521,18 +6655,27 @@ msgstr "Запустить веб-клиент" msgid "Client Apps" msgstr "Клиентские Приложения" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Приложение включено" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Приложение отключено" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Гуджарати" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Каталог, где хранятся загрузки. Если изменить каталог по умолчанию, " +#~ "убедитесь, что новый каталог существует и доступен для записи " +#~ "пользователем \"debian-transmission\" ." + #~ msgid "OpenVPN server is running" #~ msgstr "Сервер OpenVPN выполняется" @@ -7444,9 +7587,6 @@ msgstr "Гуджарати" #~ msgid "Generated PGP key." #~ msgstr "Сгенерированный ключ PGP." -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Mumble Сервер Голосового Чата" - #~ msgid "Enable Mumble daemon" #~ msgstr "Включить Mumble как демон" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index 40ea71eeb..aed39d7f7 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-05-07 20:48+0000\n" "Last-Translator: Erik Ušaj \n" "Language-Team: Slovenian /" @@ -713,11 +713,31 @@ msgstr "" "\"{users_url}\">katerikoli uporabnik na {box_name}, ki je član skupine " "skrbnikov." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -725,13 +745,13 @@ msgstr "" msgid "Configure" msgstr "Nastavitve" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Ime domene" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Neveljavno ime domene" @@ -760,11 +780,11 @@ msgstr "" "črko ali številko in je lahko sestavljeno iz črk, številk in vezajev. " "Skupna dolžina ne sme presegati 63 znakov." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Neveljavno ime gostitelja" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -781,11 +801,11 @@ msgstr "" "presegati 63 znakov. Skupna dolžina imena domene ne sme presegati 253 " "znakov." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Domača stran spletnega strežnika" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -795,51 +815,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -847,7 +867,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -945,23 +965,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -979,7 +999,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -1067,18 +1087,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1119,46 +1139,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Ime domene" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1167,68 +1187,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1287,7 +1307,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1295,15 +1315,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1311,18 +1331,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1563,7 +1583,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository not found" msgid "Repository's owner name" @@ -1648,39 +1668,39 @@ msgstr "Želite ta arhiv trajno izbrisati?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Ne najdem skladišča" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Ne najdem skladišča" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create new repository" msgid "Edit repository" msgstr "Ustvari novo skladišče" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1689,8 +1709,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1829,7 +1849,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1943,11 +1963,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1955,23 +1975,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1984,7 +2004,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2020,18 +2040,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2040,22 +2060,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -2094,33 +2114,33 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "Archive deleted." msgid "{title} deleted." msgstr "Arhiv je izbrisan." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2129,15 +2149,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2164,11 +2184,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2273,36 +2293,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2311,7 +2331,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2321,7 +2341,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2358,7 +2378,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2390,11 +2410,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2403,11 +2423,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2415,7 +2435,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2424,7 +2444,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2460,23 +2480,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2485,11 +2505,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2535,7 +2555,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2544,52 +2564,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2751,27 +2826,39 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "Geslo strežnika SSH" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2780,6 +2867,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2826,43 +2917,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2870,176 +2961,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3246,7 +3337,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3262,6 +3353,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3274,7 +3366,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3327,13 +3419,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3378,11 +3470,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3393,13 +3485,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3527,7 +3619,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3768,18 +3860,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3789,7 +3881,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3798,11 +3890,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3813,7 +3905,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -4022,7 +4114,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4036,13 +4128,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4050,7 +4142,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4101,21 +4193,21 @@ msgstr "" msgid "Action" msgstr "Šifriranje" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Napaka ob nameščanju aplikacije: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4125,23 +4217,23 @@ msgstr "Napaka ob nameščanju aplikacije: {error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4173,27 +4265,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4206,7 +4298,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4237,12 +4329,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4270,18 +4362,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4290,7 +4382,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4301,23 +4393,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4376,48 +4468,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4475,43 +4567,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4587,11 +4679,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4692,83 +4784,121 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "Neveljavno ime gostitelja" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4834,11 +4964,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4846,7 +4976,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4857,7 +4987,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4865,11 +4995,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4877,7 +5007,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4933,76 +5063,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5010,41 +5140,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5093,39 +5223,32 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -5140,14 +5263,14 @@ msgstr "" "\"{users_url}\">katerikoli uporabnik na {box_name}, ki je član skupine " "skrbnikov." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5155,7 +5278,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5221,18 +5344,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5240,7 +5363,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5249,15 +5372,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5266,59 +5389,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5334,12 +5457,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5369,7 +5492,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5395,62 +5518,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5493,12 +5616,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5608,6 +5731,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5687,46 +5814,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5739,15 +5862,15 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 36b091e4c..aac7d84f5 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-12-16 22:57+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish any user on {box_name} " @@ -671,11 +671,33 @@ msgstr "" "Den kan nås genom att alla användar på " "{box_name} som hör till administratörsgruppen." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Kopplingspunkt" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Allmän Konfiguration" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -683,13 +705,13 @@ msgstr "Allmän Konfiguration" msgid "Configure" msgstr "Konfigurera" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Domännamn" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Ogiltigt domännamn" @@ -718,11 +740,11 @@ msgstr "" "bindestreck, men får inte börja eller sluta med bindestreck. Värdnamn får " "vara max 63 tecken." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Ogiltigt värdnamn" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -738,11 +760,11 @@ msgstr "" "sluta med bindestreck. Varje ord får vara max 63 tecken. Total längd på " "domännamnet får max vara 253 tecken." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Webbserverens hemsida" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -758,51 +780,51 @@ msgstr "" "uttryckligen skriva / Plinth eller / freedombox för att nå {box_name} " "Service (Plinth)." -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "Visa avancerade appar och funktioner" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "Visa appar och funktioner som kräver mer teknisk kunskap." -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Fel inställning av värdnamn: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Värdnamn inställt" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Fel inställning av domännamn: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Domännamn inställt" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Fel vid inställning av webbserverns hemsida: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "Webbserverns hemsida är inställt" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Fel vid ändring av avancerat läge: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "Visar avancerade appar och funktioner" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "Dölja avancerade appar och funktioner" @@ -810,7 +832,7 @@ msgstr "Dölja avancerade appar och funktioner" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Fildelning" @@ -922,18 +944,18 @@ msgstr "Tidszon inställd" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "BitTorrent Webbklient" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 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:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." @@ -941,8 +963,8 @@ 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:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "Ladda ner filer med BitTorrent-applikationer" @@ -962,7 +984,7 @@ msgstr "" "Systemets diagnostiktest utför ett antal kontroller av ditt system för att " "bekräfta att program och tjänster fungerar som de ska." -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "Diagnostiktest" @@ -1060,18 +1082,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Uppdatera inställningar" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "Instänllningar oförändrade" @@ -1119,7 +1141,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Dynamiskt Domännamn" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1129,7 +1151,7 @@ msgstr "" "användas i webbadressen. Se mallar från de olika tjänsteleverantörerna för " "information om uppdateringsadress." -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1139,7 +1161,7 @@ msgstr "" "stöder protokollet GnuDIP, eller din leverantör saknas i listan, använd din " "leverantörs uppdateringsadress." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1147,18 +1169,18 @@ msgstr "" "Skriv inte en full webbadress här (t.ex.: \"https://exempel.com/\"), utan " "endast värdnamnet för GnuDIP servern (t.ex.: \"exempel.com\")." -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "Det public domännamnet du vill använda för att nå ditt {box_name}." -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Använd denna funktion om din tjänsteleverantör använder självsignerade " "certifikat." -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1166,11 +1188,11 @@ msgstr "" "Om detta alternativ är markerat, kommer ditt användarnamn och lösenord " "användas för grundläggande HTTP autentisering." -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "Lämna fältet tomt om du vill behålla ditt nuvarande lösenord." -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1183,68 +1205,68 @@ msgstr "" "verkliga IP. Webbadressen ska helt enkelt returnera det IP som klienten " "kommer från. (exempel: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "Användarnamnet som användes när konton skapades." -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "Aktivera Dynamisk DNS" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "Servicetype" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "GnuDIP-serveradress" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "Du har angett ett ogiltigt servernamn" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "Adress för uppdateringar" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Acceptera alla SSL-certifikat" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "Använd grundläggande HTTP-autentisering" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Användarnamn" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Lösenord" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Visa lösenord" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "URL för att hitta publik IP" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Ange en uppdateringsadress eller GnuDIP-serveradress" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "Ange ett användarnamn för GnuDIP" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "Ange ett GnuDIP-domän" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "Ange ett lösenord" @@ -1321,7 +1343,7 @@ msgstr "Senaste uppdatering" msgid "About" msgstr "Om" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1329,15 +1351,15 @@ msgstr "Om" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Status" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "Konfigurera Dynamisk DNS" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "Dynamisk DNS (Domän Namns Server) status" @@ -1345,12 +1367,12 @@ msgstr "Dynamisk DNS (Domän Namns Server) status" msgid "ejabberd" msgstr "ejabbert" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "Chat-Server" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1358,7 +1380,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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." @@ -1613,7 +1635,7 @@ msgstr "" "För att lära dig mer om hur du använder Git besökGit handledning." -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "Läs-skrivåtkomst till Git-respositories" @@ -1638,7 +1660,7 @@ msgstr "Beskrivning av förvaret" msgid "Optional, for displaying on Gitweb." msgstr "Tillval, för att visa på Gitweb." -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Förvarets ägarnamn" @@ -1708,33 +1730,33 @@ msgstr "Radera detta arkiv permanent?" msgid "Delete %(name)s" msgstr "Ta bort %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "Respository skapat." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "Ett fel uppstod medan skapa ett repository." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "Respository redigerad." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "Redigera respository" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Ett fel inträffade under konfiguration." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} borttagen." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "Kunde inte ta bort {name}: {error}" @@ -1743,8 +1765,8 @@ msgstr "Kunde inte ta bort {name}: {error}" msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Manual" @@ -1918,7 +1940,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Läs mer..." @@ -2066,11 +2088,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Anonymitetsnätverk" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2082,7 +2104,7 @@ msgstr "" "anonymitet genom att skicka krypterad trafik via ett volontärstyrt nätverk " "distribuerat över hela världen." -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." @@ -2090,7 +2112,7 @@ msgstr "" "För att hitta mer information om I2P på deras projekthemsida." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." @@ -2098,11 +2120,11 @@ msgstr "" "Det första besöket i det medföljande webbgränssnittet kommer att initiera " "konfigurationsprocessen." -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "Hantera I2P appen" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2115,7 +2137,7 @@ msgstr "Lansera" msgid "Proxies" msgstr "Proxyservrar" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Anonyma torrenter" @@ -2159,11 +2181,11 @@ msgstr "" msgid "ikiwiki" msgstr "Ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki och Blogg" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2173,7 +2195,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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2186,22 +2208,22 @@ msgstr "" "redigera befindliga. I Användarkonfiguration kan du ändra dessa behörigheter eller lägga till nya användare." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Visa och redigera wiki-applikationer" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Typ" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Namn på administratörskontot" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Lösenord för administratörskontot" @@ -2242,32 +2264,32 @@ msgstr "" "Den här åtgärden tar bort alla inlägg, sidor och kommentarer, även " "versionshistorik. Ta bort denna wiki eller blogg permanent?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "Skapade wiki {name}." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Kunde inte skapa wiki: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "Blogg skapad {name}." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Kunde inte skapa blogg: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "{title} borttagen." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "Kunde inte ta bort {title}: {error}" @@ -2276,15 +2298,15 @@ msgstr "Kunde inte ta bort {title}: {error}" msgid "infinoted" msgstr "Infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby-Server" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 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:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2316,11 +2338,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Chat klient" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2438,7 +2460,7 @@ msgstr "" "Inga domäner har konfigurerats. Konfigurera " "domäner för att kunna få certifikat för dem." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2447,29 +2469,29 @@ msgstr "" "Certifikatet återkallat för domänen {domain}. Det kan ta några ögonblick att " "träda i kraft." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "Det gick inte att återkalla certifikatet för domänen {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "Certifikat erhållet för domänen {domain}" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "Det gick inte att erhålla certifikat för domänen {domain}: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "Certifikatet framgångsrikt återkallat för domänen {domain}" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Det gick inte att ta bort certifikatet för domänen {domain}: {error}" @@ -2478,7 +2500,7 @@ msgstr "Det gick inte att ta bort certifikatet för domänen {domain}: {error}" msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2495,7 +2517,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:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @ användarnamn: domännamn." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2545,7 +2567,7 @@ msgstr "" " installationen stöds för närvarande inte.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2591,11 +2613,11 @@ msgstr "" " Encrypt för att få en.\n" " " -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Offentlig registrering aktiverad" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Offentlig registrering avaktiverad" @@ -2604,11 +2626,11 @@ msgstr "Offentlig registrering avaktiverad" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Wiki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2620,7 +2642,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:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2634,7 +2656,7 @@ msgstr "" "fler användarkonton från MediaWiki själv genom att gå till Special: Skapa konto sida." -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2679,23 +2701,23 @@ msgstr "" "läsa/skriva till wiki. Offentliga registreringar kommer också att " "inaktiveras." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Lösenord uppdaterad" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "Offentliga registreringar aktiverade" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "Offentliga registreringar avaktiverad" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "Privat läge aktiverat" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "Privat läge inaktiverat" @@ -2704,11 +2726,11 @@ msgstr "Privat läge inaktiverat" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Block sandbox" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2763,7 +2785,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Om inaktiverat kan spelare inte dö eller få skador av något slag." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Adress" @@ -2772,32 +2794,89 @@ msgstr "Adress" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Maximal spelarkonfiguration uppdaterad" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Kreativ-modus konfiguration uppdaterad" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "PVP-konfiguration uppdaterad" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Skadekonfiguration uppdaterad" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Server för Mumble röstchatt" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "Mldonkey" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "Peer-to-peer fildelning" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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 " @@ -2807,7 +2886,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:48 +#: plinth/modules/mldonkey/__init__.py:50 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 " @@ -2818,14 +2897,14 @@ msgstr "" "någon av de separata mobil-eller skrivbords frontend-ändarna eller ett " "Telnet-gränssnitt. Se manualen." -#: plinth/modules/mldonkey/__init__.py:53 +#: plinth/modules/mldonkey/__init__.py:55 #, 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:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "Ladda ner filer med eDonkey program" @@ -3004,15 +3083,15 @@ msgstr "Publicerade nyckeln till nyckelserver." msgid "Error occurred while publishing key." msgstr "Fel uppstod när nyckeln publicerades." -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Röstchatt" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3020,7 +3099,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:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3030,6 +3109,18 @@ msgstr "" "\"http://mumble.info\"> Appar finns för att ansluta till Mumble från din " "dator- och Android-enheter." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "SSH server lösenord" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3038,6 +3129,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Lösenordet har ändrats." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "Namntjänster" @@ -3092,23 +3189,23 @@ msgstr "Använder DNSSEC på IPv{kind}" msgid "Connection Type" msgstr "Anslutningstyp" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Anslutningens namn" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Fysiskt gränssnitt" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "Den nätverksenhet som denna anslutning ska knytas till." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Brandväggs-zon" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3116,21 +3213,21 @@ msgstr "" "Brandväggs-zonen bestämmer vilka tjänster är tillgängliga genom detta " "gränssnitt. Välj endast interna för betrodda nätverk." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Externa" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "Addresseringsmetod för IPv4" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3142,19 +3239,19 @@ msgstr "" "göra {box_name} fungera som en router, konfigurera klienter på detta nätverk " "och dela sin Internet-anslutning." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Automatisk (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Delade" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Nätmask" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3162,21 +3259,21 @@ msgstr "" "Valfritt värde. Om detta lämnas tomt kommer en standard nätmask baserad på " "adressen användas." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Valfritt värde." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS-Server" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3185,11 +3282,11 @@ msgstr "" "\"Automatisk\", kommer DNS-servrar tillhandahållna av en DHCP-server att " "ignoreras." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "Sekundär DNS-server" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3197,11 +3294,11 @@ msgstr "" "Valfritt värde. Om värde anges och IPv4-adresseringsmetod är \"Automatisk\", " "kommer DNS-servrar tillhandahållna av en DHCP-server att ignoreras." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "IPv6-Addresseringsmetod" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3210,27 +3307,27 @@ msgstr "" "\"Automatisk\" metoder kommer att göra {box_name} hämta konfiguration från " "det här nätverket och gör det till en klient." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Automatisk" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Automatisk, bara DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Ignorera" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Prefix" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "Värde mellan 1 och 128." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3239,7 +3336,7 @@ msgstr "" "\"Automatisk\", kommer DNS-servrar tillhandahållna av en DHCP-server att " "ignoreras." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3247,54 +3344,54 @@ msgstr "" "Valfritt värde. Om värde anges och IPv6-adresseringsmetod är \"Automatisk\", " "kommer DNS-servrar tillhandahållna av en DHCP-server att ignoreras." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "--Välj--" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Synligt namn för nätverket." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Läge" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Kopplingspunkt" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc-" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Frekvensbandet" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3302,11 +3399,11 @@ msgstr "" "Valfritt värde. Trådlösa kanalen i det valda frekvensbandet för att begränsa " "till. Tomt eller 0 värde betyder automatiskt val." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3316,11 +3413,11 @@ msgstr "" "en åtkomstpunkt ska du endast ansluta om åtkomstpunktens BSSID matchar det " "som angetts. Exempel: 00:11:22: aa: bb: cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Autentiseringsläge" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3328,11 +3425,11 @@ msgstr "" "Välj WPA om det trådlösa nätverket är säkert och kräver att användare har " "lösenord för att ansluta." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Öppet" @@ -3541,7 +3638,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Metod" @@ -3557,6 +3654,7 @@ msgstr "DNS-Server" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Standard" @@ -3569,7 +3667,7 @@ msgid "This connection is not active." msgstr "Den här anslutningen är inte aktiv." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Säkerhet" @@ -3633,13 +3731,13 @@ msgstr "Avstånd" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3682,11 +3780,11 @@ msgstr "Skaffa..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Virtuellt privat nätverk" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3703,14 +3801,14 @@ 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:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "Ladda ner profil" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "Aktivera OpenVPN server" @@ -3762,8 +3860,8 @@ msgid "" msgstr "" "För att ansluta till %(box_name)s VPN måste du ladda ner en profil och mata " "den till en OpenVPN-klient på din mobila eller stationära dator. OpenVPN-" -"klienter är tillgängliga för de flesta plattformar. Klicka på \"Läs mer...\"" -" ovan för rekommenderade klienter och instruktioner om hur du konfigurerar " +"klienter är tillgängliga för de flesta plattformar. Klicka på \"Läs mer..." +"\" ovan för rekommenderade klienter och instruktioner om hur du konfigurerar " "dem." #: plinth/modules/openvpn/templates/openvpn.html:100 @@ -3866,7 +3964,7 @@ msgstr "" "Välj din pagekite-Server. Ange \"pagekite.net\" om du vill använda " "standardservern pagekite.net." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Server Port" @@ -4136,11 +4234,11 @@ msgstr "Stäng av nu" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Webbproxy" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4150,7 +4248,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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4165,7 +4263,7 @@ msgstr "" "\"http://config.privoxy.org\">http://config.privoxy.org/ eller http://p.p." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Åtkomst till {url} med proxy {proxy} på TCP {kind}" @@ -4174,11 +4272,11 @@ msgstr "Åtkomst till {url} med proxy {proxy} på TCP {kind}" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "IRC-klient" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4195,7 +4293,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:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your klientprogram som stöds. " "Radicale kan kommas åt av alla användare med en {box_name}-inloggning." -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4324,7 +4422,7 @@ msgstr "" "address>) och ditt användarnamn. Om du klickar på sökknappen visas en lista " "över befintliga kalendrar och adressböcker." -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "Konfiguration av åtkomsträttigheter uppdaterad" @@ -4436,11 +4534,11 @@ msgstr "" msgid "Roundcube" msgstr "Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 msgid "Email Client" msgstr "E-postklient" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4452,7 +4550,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:45 +#: plinth/modules/roundcube/__init__.py:47 msgid "" "You can access Roundcube from /roundcube. Provide the username and password of the email account " @@ -4468,7 +4566,7 @@ msgstr "" "(rekommenderas), Fyll i fältet Server som imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4488,7 +4586,7 @@ msgstr "" msgid "Samba" msgstr "Samba" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." @@ -4496,7 +4594,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:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4507,7 +4605,7 @@ msgstr "" "Aktiverat {hostname}-resurser är öppna för alla i ditt lokala nätverk och är " "tillgängliga under nätverks avsnitt i filhanteraren på datorn." -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "Komma åt delade mappar inifrån servern" @@ -4558,20 +4656,20 @@ msgstr "Resursnamn" msgid "Action" msgstr "Åtgärder" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "Resurs aktiverad." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Fel vid aktivering av resurs: {error_message}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "Share resurs inaktiverat." -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Fel vid inaktivering av resurs: {error_message}" @@ -4580,11 +4678,11 @@ msgstr "Fel vid inaktivering av resurs: {error_message}" msgid "Searx" msgstr "Searx" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "Webbsökning" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4592,7 +4690,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:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4600,7 +4698,7 @@ 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "Sök på webben" @@ -4632,16 +4730,16 @@ msgstr "Tillåt offentlig åtkomst" msgid "Allow this application to be used by anyone who can reach it." msgstr "Tillåt att det här programmet används av alla som kan nå det." -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Konfiguration uppdaterad." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Begränsa konsol inloggningar (rekommenderas)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4651,11 +4749,11 @@ msgstr "" "\"admin\" att kunna logga in på Console eller via SSH. Konsolanvändare kan " "komma åt vissa tjänster utan ytterligare auktorisering." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2Ban (rekommenderas)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4671,7 +4769,7 @@ msgid "Show security report" msgstr "Visa säkerhetsrapport" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "Säkerhetsrapport" @@ -4704,12 +4802,12 @@ msgstr "Aktuella sårbarheter" msgid "Past Vulnerabilities" msgstr "Tidigare sårbarheter" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Fel vid inställning av begränsad åtkomst: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Uppdaterad säkerhetskonfiguration" @@ -4741,11 +4839,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Socks5 proxy" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4755,7 +4853,7 @@ msgstr "" "Internet-trafik. Det kan användas för att kringgå Internetfiltrering och " "censur." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4768,7 +4866,7 @@ msgstr "" "enheter kan ansluta till denna proxy och deras data kommer att krypteras och " "proxied via Shadowsocks-servern." -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4781,24 +4879,24 @@ msgstr "" msgid "Recommended" msgstr "Rekommenderas" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Server" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Serverns värdnamn eller IP-adress" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Server portnummer" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "Lösenord som används för att kryptera data. Måste matcha serverns lösenord." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "Krypteringsmetod. Måste matcha inställningen på servern." @@ -4863,48 +4961,48 @@ msgstr "Det finns redan en share med det här namnet." msgid "Shares should be either public or shared with at least one group" msgstr "Shares ska antingen vara offentliga eller delas med minst en grupp" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "Lägg till share" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "Inga shares har konfigurerats." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "Disk Sök väg" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "Delas över" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "Med grupper" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "Publik tillgång" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "Share tillagd." -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "Lägg till share" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "Share redigerad." -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "Redigera share" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "Share borttagen." @@ -4979,43 +5077,43 @@ msgstr "" "Aktivera eller inaktivera ögonblicksbilder före och efter " "programvaruinstallationen" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "Gräns för ögonblicksbilder per timme" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "Behåll högst så många ögonblicksbilder per timme." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "Dagliga ögonblicksbilder gräns" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "Behåll högst detta många dagliga ögonblicksbilder." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "Gräns för vecko ögonblicksbilder" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "Behåll högst detta många veckovisa ögonblicksbilder." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "Månatliga ögonblicksbilder gräns" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "Behåll högst detta många månatliga ögonblicksbilder." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "Årlig ögonblicksbild gräns" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5099,11 +5197,11 @@ msgstr "Hantera ögonblicksbilder" msgid "Created snapshot." msgstr "Skapade ögonblicksbild." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "Lagring ögonblicksbildkonfiguration uppdaterad" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Åtgärdsfel: {0} [{1}] [{2}]" @@ -5214,83 +5312,129 @@ 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:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} Kib" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Mib" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Gib" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Tib" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "Åtgärden misslyckades." -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "Operationen avbröts." -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "Enheten lossnar redan." -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 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:247 msgid "The operation timed out." msgstr "Åtgärden orsakade timeout." -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 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:254 msgid "The operation has already been cancelled." msgstr "Operationen har redan avbrutits." -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 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:262 msgid "The device is already mounted." msgstr "Enheten är redan monterad." -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "Enheten är inte monterad." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "Inte tillåtet att använda det begärda alternativet." -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "Enheten monteras av en annan användare." +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid repository name." +msgid "Invalid directory name." +msgstr "Ogiltigt respository namn." + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "Ladda ner katalog" + +#: plinth/modules/storage/forms.py:96 +#, fuzzy +#| msgid "The device is mounted by another user." +msgid "Directory is not readable by the user." +msgstr "Enheten monteras av en annan användare." + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "Ladda ner katalog" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Samba" +msgid "Samba share" +msgstr "Samba" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "Följande lagringsenheter används:" @@ -5364,11 +5508,11 @@ msgstr "Fel mata ut enhet: {error_message}" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Filsynkronisering" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5380,7 +5524,7 @@ msgstr "" "filer på en enhet kommer att replikeras automatiskt på alla andra enheter " "som också kör Syncthing." -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5398,7 +5542,7 @@ msgstr "" "{box_name} är endast tillgängligt för användare som tillhör gruppen \"admin" "\"." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "Administrera Syncthing-program" @@ -5406,11 +5550,11 @@ msgstr "Administrera Syncthing-program" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Distribuerad fillagring" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5422,7 +5566,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:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5490,56 +5634,56 @@ msgstr "" "använder TOR Browser." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "Tor Onion service" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "Tor SOCKS-proxy" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Tor relä port tillgänglig" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registrerad" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registrerad" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, 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:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekräfta Tor-användning vid {url} på TCP {kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" "Ange en giltig brygga med det här formatet: [transport] IP:ORPort " "[fingerprint]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Aktivera Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Använda uppströms broar för att ansluta till Tor-nätverket" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5550,11 +5694,11 @@ msgstr "" "leverantören blockerar eller censurerar anslutningar till Tor-nätverket. " "Detta kommer att avaktivera relä lägen." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Uppströms broar" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5565,11 +5709,11 @@ msgstr "" "informationen här. För närvarande stöds transporter är ingen, obfs3, obfs4 " "och scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Aktivera Tor Relay" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5580,11 +5724,11 @@ msgstr "" "bandbredd till Tor-nätverket. Gör detta om du har mer än 2 megabits/s av " "uppladdning och nedladdning bandbredd." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Aktivera Tor Bridge Relay" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5594,14 +5738,20 @@ msgstr "" "stället för public Tor Relay-databasen, vilket gör det svårare att censurera " "den här noden. Detta hjälper andra att kringgå censur." -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +#, fuzzy +#| msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Aktivera Tor Onion service" -#: plinth/modules/tor/forms.py:131 -#, python-brace-format +#: plinth/modules/tor/forms.py:120 +#, fuzzy, python-brace-format +#| msgid "" +#| "An onion service will allow {box_name} to provide selected services (such " +#| "as wiki or chat) without revealing its location. Do not use this for " +#| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5609,11 +5759,11 @@ msgstr "" "tjänster (till exempel wiki eller chatt) utan att avslöja dess plats. Använd " "inte detta för stark anonymitet ännu." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Ladda ner mjukvarupaket över Tor" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5623,7 +5773,7 @@ msgstr "" "installationer och uppgraderingar. Detta ger en viss grad av integritet och " "säkerhet under Programnedladdningar." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "Ange minst en uppströms bro för att använda uppströms broar." @@ -5674,7 +5824,7 @@ msgstr "En Tor SOCKS-port finns på din %(box_name)s på TCP-port 9050." msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5682,29 +5832,19 @@ msgstr "" "BitTorrent är ett peer-to-peer-fildelningsprotokoll. Transmission daemon " "hanterar bitorrent fildelning. Observera att BitTorrent inte är anonym." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "Ladda ner katalog" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"Katalog där nedladdningar sparas. Om du ändrar standardkatalogen ska du se " -"till att den nya katalogen finns och att den är skrivbar av användaren " -"\"Debian-transmission\"." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Läsare för nyhetsflödet" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5714,16 +5854,16 @@ 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -"När den är aktiverad, kan Tiny Tiny RSS nås av alla " -"användare med en {box_name} login." +"När den är aktiverad, kan Tiny Tiny RSS nås av alla användare med en {box_name} login." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for " @@ -5733,7 +5873,7 @@ msgstr "" "Använd URL: en /tt-RSS-" "app för att ansluta." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Läsa och prenumerera på nyhetsflöden" @@ -5741,7 +5881,7 @@ msgstr "Läsa och prenumerera på nyhetsflöden" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Uppdatera" @@ -5813,11 +5953,11 @@ msgstr "Uppgraderingsprocessen påbörjades." msgid "Starting upgrade failed." msgstr "Det gick inte att starta uppgraderingen." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Användare och grupper" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " @@ -5828,7 +5968,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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5839,7 +5979,7 @@ 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:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrollera LDAP-posten \"{search_item}\"" @@ -5848,15 +5988,15 @@ msgstr "Kontrollera LDAP-posten \"{search_item}\"" msgid "Access to all services and system settings" msgstr "Tillgång till alla tjänster och Systeminställningar" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "Användarnamnet är upptaget eller är reserverade." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "Behörigheter" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5870,20 +6010,20 @@ msgstr "" "administratörsgruppen kommer att kunna logga in på alla tjänster. De kan " "också logga in på systemet via SSH och har administratörsprivilegier (sudo)." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "Det gick inte att skapa LDAP-användare." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Det gick inte att lägga till nya användare i gruppen {group}." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Auktoriserade SSH-nycklar" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -5893,39 +6033,39 @@ msgstr "" "systemet utan att använda ett lösenord. Du kan ange flera nycklar, en på " "varje rad. Tomma rader och rader som börjar med # kommer att ignoreras." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "Det gick inte att byta namn på LDAP-användare." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Det gick inte att ta bort användare från gruppen." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Det gick inte att lägga till användare i gruppen." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "Det går inte att ange SSH-nycklar." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "Det går inte att ta bort den enda administratören i systemet." -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "Det gick inte att ändra användarlösenordet för LDAP." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Det gick inte att lägga till ny användare till administrationsgruppen." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Det gick inte att begränsa åtkomst till konsolen." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Användarkonto skapat, du är nu inloggad" @@ -5941,12 +6081,12 @@ msgstr "Spara lösenord" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Skapa användare" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Ta bort användare" @@ -5979,7 +6119,7 @@ msgid "Create Account" msgstr "Skapa konto" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Användare" @@ -6007,62 +6147,62 @@ msgstr "" msgid "Save Changes" msgstr "Spara ändringar" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "Användaren %(username)s skapades." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "Användaren %(username)s har uppdaterats." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Redigera användar" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "Användare {user} borttagen." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "Det gick inte att ta bort LDAP-användare." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Ändra lösenord" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Lösenordet har ändrats." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "Pppoe" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Generiska" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Fel vid installation" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "Installera" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "ladda ner" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "Mediabyte" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -6113,12 +6253,12 @@ msgstr "" "plinth/issues\">bug tracker så att vi kan fixa det. Bifoga också status logg till felrapporten." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "Tjänsten %(service_name)s körs." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "Tjänsten %(service_name)s körs inte." @@ -6230,6 +6370,10 @@ msgstr "" "Vänligen vänta på %(box_name)s för att slutföra installationen. Du kan börja " "använda din %(box_name)s när det är klart." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Installation" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6324,19 +6468,15 @@ msgstr "" "Om din FreedomBox är bakom en router, måste du ställa in Port Forwarding på " "routern. Du bör vidarebefordra följande portar för %(service_name)s:" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Installation" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Installera den här applikationen?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Det här programmet behöver uppdateras. Uppdatera nu?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6344,28 +6484,28 @@ msgstr "" "En annan installation eller uppgradering körs redan. Vänta en stund innan du " "försöker igen." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "Denna ansökan är för närvarande inte tillgänglig i din distribution." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Installera" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Utföra för installationsåtgärd" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Utföra åtgärder efter installationen" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "Installerar %(package_names)s:%(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s %% färdigt" @@ -6378,18 +6518,27 @@ msgstr "Starta webbklient" msgid "Client Apps" msgstr "Klientappar" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Program aktiverat" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Programmet är inaktiverat" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "Gujarati" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "Katalog där nedladdningar sparas. Om du ändrar standardkatalogen ska du " +#~ "se till att den nya katalogen finns och att den är skrivbar av användaren " +#~ "\"Debian-transmission\"." + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN-servern körs" @@ -6825,9 +6974,6 @@ msgstr "Gujarati" #~ msgid "Generated PGP key." #~ msgstr "PGP-nyckel genererad." -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Server för Mumble röstchatt" - #~ msgid "Enable Mumble daemon" #~ msgstr "Aktivera Mumble-demon" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index bf09cdbb2..092648b64 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,22 +22,22 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/action_utils.py:299 +#: plinth/action_utils.py:298 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" msgstr "" -#: plinth/action_utils.py:302 +#: plinth/action_utils.py:301 #, python-brace-format msgid "Listening on {kind} port {port}" msgstr "" -#: plinth/action_utils.py:407 +#: plinth/action_utils.py:406 #, python-brace-format msgid "Access URL {url} on tcp{kind}" msgstr "" -#: plinth/action_utils.py:411 +#: plinth/action_utils.py:410 #, python-brace-format msgid "Access URL {url}" msgstr "" @@ -52,7 +52,7 @@ msgstr "" msgid "Cannot connect to {host}:{port}" msgstr "" -#: plinth/context_processors.py:37 plinth/views.py:61 +#: plinth/context_processors.py:36 plinth/views.py:61 msgid "FreedomBox" msgstr "" @@ -60,38 +60,38 @@ msgstr "" msgid "Enable application" msgstr "" -#: plinth/forms.py:55 +#: plinth/forms.py:54 msgid "Select a domain name to be used with this application" msgstr "" -#: plinth/forms.py:57 +#: plinth/forms.py:56 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -#: plinth/forms.py:65 +#: plinth/forms.py:64 msgid "Language" msgstr "" -#: plinth/forms.py:66 +#: plinth/forms.py:65 msgid "Language to use for presenting this web interface" msgstr "" -#: plinth/forms.py:73 +#: plinth/forms.py:72 msgid "Use the language preference set in the browser" msgstr "" -#: plinth/middleware.py:73 plinth/templates/setup.html:57 +#: plinth/middleware.py:72 plinth/templates/setup.html:45 msgid "Application installed." msgstr "" -#: plinth/middleware.py:79 +#: plinth/middleware.py:78 #, python-brace-format msgid "Error installing application: {string} {details}" msgstr "" -#: plinth/middleware.py:83 +#: plinth/middleware.py:82 #, python-brace-format msgid "Error installing application: {error}" msgstr "" @@ -102,7 +102,7 @@ msgstr "" msgid "Web Server" msgstr "" -#: plinth/modules/apache/__init__.py:58 +#: plinth/modules/apache/__init__.py:57 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" msgstr "" @@ -192,7 +192,7 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:304 +#: plinth/modules/backups/forms.py:135 plinth/modules/networks/forms.py:275 msgid "Passphrase" msgstr "" @@ -262,27 +262,27 @@ msgstr "" msgid "Connection refused" msgstr "" -#: plinth/modules/backups/repository.py:63 +#: plinth/modules/backups/repository.py:62 msgid "Repository not found" msgstr "" -#: plinth/modules/backups/repository.py:69 +#: plinth/modules/backups/repository.py:67 msgid "Incorrect encryption passphrase" msgstr "" -#: plinth/modules/backups/repository.py:74 +#: plinth/modules/backups/repository.py:72 msgid "SSH access denied" msgstr "" -#: plinth/modules/backups/repository.py:80 +#: plinth/modules/backups/repository.py:78 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" -#: plinth/modules/backups/repository.py:154 +#: plinth/modules/backups/repository.py:152 msgid "Existing repository is not encrypted." msgstr "" -#: plinth/modules/backups/repository.py:342 +#: plinth/modules/backups/repository.py:337 #, python-brace-format msgid "{box_name} storage" msgstr "" @@ -337,7 +337,7 @@ msgid "Create Location" msgstr "" #: plinth/modules/backups/templates/backups_add_repository.html:34 -#: plinth/modules/gitweb/views.py:69 +#: plinth/modules/gitweb/views.py:70 msgid "Create Repository" msgstr "" @@ -346,9 +346,9 @@ msgid "Delete this archive permanently?" msgstr "" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "" @@ -583,9 +583,9 @@ msgstr "" msgid "Enable Domain Name System Security Extensions" msgstr "" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "" @@ -593,11 +593,11 @@ msgstr "" msgid "Cockpit" msgstr "" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -606,18 +606,38 @@ msgid "" "console operations is also available." msgstr "" -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, 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:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -625,13 +645,13 @@ msgstr "" msgid "Configure" msgstr "" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -656,11 +676,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -671,11 +691,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -685,51 +705,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -737,7 +757,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -835,23 +855,23 @@ msgstr "" msgid "Deluge" msgstr "" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -869,7 +889,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -957,18 +977,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1007,46 +1027,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1055,68 +1075,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1175,7 +1195,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1183,15 +1203,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1199,18 +1219,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1447,7 +1467,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1517,33 +1537,33 @@ msgstr "" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1552,8 +1572,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1692,7 +1712,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1806,11 +1826,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1818,23 +1838,23 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1847,7 +1867,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1883,18 +1903,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1903,22 +1923,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -1957,32 +1977,32 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, python-brace-format msgid "{title} deleted." msgstr "" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -1991,15 +2011,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2026,11 +2046,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2135,36 +2155,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2173,7 +2193,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2183,7 +2203,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2220,7 +2240,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2252,11 +2272,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2265,11 +2285,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2277,7 +2297,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2286,7 +2306,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2322,23 +2342,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2347,11 +2367,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2397,7 +2417,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2406,52 +2426,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2613,27 +2688,37 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +msgid "Set SuperUser Password" +msgstr "" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2642,6 +2727,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2688,43 +2777,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2732,176 +2821,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3108,7 +3197,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3124,6 +3213,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3136,7 +3226,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3189,13 +3279,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3238,11 +3328,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3253,13 +3343,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3387,7 +3477,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3628,18 +3718,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3649,7 +3739,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3658,11 +3748,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3673,7 +3763,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3882,7 +3972,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3896,13 +3986,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3910,7 +4000,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -3959,20 +4049,20 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -3981,23 +4071,23 @@ msgstr "" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4029,27 +4119,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4062,7 +4152,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4091,12 +4181,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4124,18 +4214,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4144,7 +4234,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4155,23 +4245,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4230,48 +4320,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4329,43 +4419,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4441,11 +4531,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4544,83 +4634,119 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +msgid "Invalid directory name." +msgstr "" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4686,11 +4812,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4698,7 +4824,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4709,7 +4835,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4717,11 +4843,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4729,7 +4855,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4785,76 +4911,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4862,41 +4988,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -4945,53 +5071,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -4999,7 +5118,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5065,18 +5184,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5084,7 +5203,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5093,15 +5212,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5110,59 +5229,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5178,12 +5297,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5213,7 +5332,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5239,62 +5358,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5337,12 +5456,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5452,6 +5571,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5531,46 +5654,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5583,14 +5702,14 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index b83a33228..0fe1f905d 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-07-22 17:06+0000\n" "Last-Translator: Joseph Nuthalapati \n" "Language-Team: Telugu %(name)s అనుసంధానం శాశ్వతంగా తొలగించు ?" #: plinth/modules/backups/templates/backups_delete.html:33 -#: plinth/modules/ikiwiki/forms.py:32 +#: plinth/modules/ikiwiki/forms.py:30 #: plinth/modules/networks/templates/connection_show.html:78 -#: plinth/modules/sharing/templates/sharing.html:56 +#: plinth/modules/sharing/templates/sharing.html:52 msgid "Name" msgstr "పేరు" @@ -655,9 +655,9 @@ msgstr "DNSSEC అమలుచెయ్యి" msgid "Enable Domain Name System Security Extensions" msgstr "డొమైన్ నేమ్ సిస్టం భద్రతా పొడిగింపు ని ప్రారంభించండి" -#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:172 -#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:79 -#: plinth/modules/transmission/views.py:74 +#: plinth/modules/bind/views.py:59 plinth/modules/dynamicdns/views.py:171 +#: plinth/modules/openvpn/views.py:152 plinth/modules/shadowsocks/views.py:80 +#: plinth/modules/transmission/views.py:73 msgid "Configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" @@ -665,11 +665,11 @@ msgstr "ఆకృతీకరణ నవీకరించబడింది" msgid "Cockpit" msgstr "కాక్పిట్" -#: plinth/modules/cockpit/__init__.py:47 +#: plinth/modules/cockpit/__init__.py:49 msgid "Server Administration" msgstr "సేవిక పరిపాలాన" -#: plinth/modules/cockpit/__init__.py:51 +#: plinth/modules/cockpit/__init__.py:53 #, python-brace-format msgid "" "Cockpit is a server manager that makes it easy to administer GNU/Linux " @@ -681,7 +681,7 @@ msgstr "" "చేస్తుంది. ఈ {box_name},లొ సాధారణంగా అవసరం లేని అనేక ఆధునిక ఫంక్షన్లకు నియంత్రణలు అందుబాటులో " "ఉన్నాయి.కన్సోల్ ఆపరేషన్లకు వెబ్ ఆధారిత టెర్మినల్ కూడా అందుబాటులో ఉంది." -#: plinth/modules/cockpit/__init__.py:57 +#: plinth/modules/cockpit/__init__.py:59 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -698,11 +698,33 @@ msgstr "" "ద్వారా పొందవచ్చు {box_name}.\n" "అంగీకార సమాచారం మరియు సిస్టమ్ మార్చడం సామర్ధ్యాలు నిర్వాహక సమూహం చెందిన వినియోగదారులకు పరిమితం." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "ప్రాప్తి సూచి" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "సాధారణ ఆకృతీకరణ" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -710,13 +732,13 @@ msgstr "సాధారణ ఆకృతీకరణ" msgid "Configure" msgstr "ఆకృతీకరణ" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "డొమైను పేరు" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "డొమైన్ పేరు చెల్లదు" @@ -746,11 +768,11 @@ msgstr "" "ఇవ్వబడే పేరు. ఆది అక్షరంతో మొదలై అక్షారంతో ముగింపబడలి. ఆ మధ్యలో అంకెలు కానీ అక్షరాలు కానీ హైఫెన్(-) " "మాత్రమే ఉండాలి. మొత్తం 63 అక్షరాలు లేదా అంత కన్నా తక్కువ ఉండవలెను." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "ఆతిథ్యనామం చెల్లనిది" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -766,13 +788,13 @@ msgstr "" "అక్షరాలు లేదా అంత కన్నా తక్కువే కలిగి ఉండాలి. మొత్తం డోమైన్ పేరు పొడవు ౨౫౩ అక్షరాలు లేదా అంత అత కంటే " "తక్కువే ఉండాలి." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 #, fuzzy #| msgid "Web Server (HTTP)" msgid "Webserver Home Page" msgstr "వెబ్ సేవిక (HTTP)" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -782,53 +804,53 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "ఆతిథ్యనామం అమర్చుటలో లోపం: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "ఆతిథ్యనామం అమర్చు" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "అధికారక్షేత్రం పేరు అమర్పులోపం: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "అధికారక్షేత్రం పేరు అమర్పు" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "ఆతిథ్యనామం అమర్చుటలో లోపం: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "అధికారక్షేత్రం పేరు అమర్పులోపం: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -836,7 +858,7 @@ msgstr "" msgid "Coquelicot" msgstr "కోక్లికో" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "ఫైలు పంచుకొనుట" @@ -946,16 +968,16 @@ msgstr "సమయమండలం ఏర్పాటు చేయబడినద msgid "Deluge" msgstr "డెలూజ్" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "బిట్ టోరెంట్ క్లైంట్" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "డీలడ్జ్ అనేది జాల UI కలిగివున్న ఒక బిట్ టోరెంట్ కక్షిదారు." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1647,7 +1669,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" @@ -1737,37 +1759,37 @@ msgstr "%(name)s అనుసంధానం శాశ్వత msgid "Delete %(name)s" msgstr "%(name)s తొలగించు" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 msgid "Repository created." msgstr "" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 msgid "Repository edited." msgstr "" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} ను తొలగించలేము: {error}" @@ -1776,8 +1798,8 @@ msgstr "{name} ను తొలగించలేము: {error}" msgid "Documentation" msgstr "పత్రావళి" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "కరదీపిక" @@ -1931,7 +1953,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "మరింత తెలుసుకోండి.." @@ -2063,13 +2085,13 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "టోర్ అనామిక నెట్‌వర్క్" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2077,7 +2099,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s వికీ ను దర్శించండి." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "అనువర్తనాన్ని చేతనించు" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy msgid "I2P Proxy" msgstr "వెబ్ ప్రాక్సీ (Privoxy)" @@ -2115,7 +2137,7 @@ msgstr "ప్రారంభించు" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2151,11 +2173,11 @@ msgstr "" msgid "ikiwiki" msgstr "ఇకివికీ" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "వికీ మరియు బ్లాగ్" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2172,7 +2194,7 @@ msgstr "" "ఎస్ ఫీడ్లు వంటి సాధారణ బ్లాగింగ్ కార్యాచరణకు సహకరిస్తుంది. దీన్ని ఆమోదించినప్పుడు మీ బ్లాగులు మరియు " "వికీలు /ikiwiki వద్ద అందుబాటులో ఉంటాయి(తయారుచేసిన తరువాత)." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, fuzzy, python-brace-format #| msgid "" #| "Only {box_name} users in the admin group can create and " @@ -2190,22 +2212,22 @@ msgstr "" "ఇప్పటికే ఉన్న వాటిని సవరించగలరు. వినియోగదారు " "ఆకృతీకరణ లో మీరు అనుమతులను మార్చవచ్చు లేదా క్రొత్త వినియోగదారులను చేర్చవచ్చు." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "వికీ అనువర్తనాలను చూడండి మరియు మార్చండి" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "రకం" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "నిర్వాహకుని ఖాతా పేరు" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "నిర్వాహకుని ఖాతా రహస్యపదం" @@ -2246,33 +2268,33 @@ msgstr "" "ఈ చర్య పునర్విమర్శ చరిత్రతో సహా అన్ని పోస్ట్లు, పుటలు మరియు వ్యాఖ్యలు తొలగిస్తుంది. ఈ వికీ లేదా బ్లాగ్ " "శాశ్వతంగా తొలగించాలా?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "{name} వికీ సృష్టించబడింది." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "వికీని సృష్టించలేము: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "{name} బ్లాగు సృష్టించబడింది." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "బ్లాగు సృష్టించలేము: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2282,15 +2304,15 @@ msgstr "{name} ను తొలగించలేము: {error}" msgid "infinoted" msgstr "ఇన్ఫినోటెడ్" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "గాబ్బీ సేవకం" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "Gobby కోసం ఇన్ఫినోటెడ్ అనేది ఒక సర్వర్,ఒక సహకార టెక్స్ట్ ఎడిటర్." -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2322,11 +2344,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "చాట్ క్లయింట్" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2442,7 +2464,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "తోబుట్టువుల డొమైన్లు కన్ఫిగర్ చేయబడ్డాయి. వారికి సర్టిఫికేట్లు పొందగలగటం డొమైన్ ఆకృతీకరించుము." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2450,30 +2472,30 @@ msgid "" "moments to take effect." msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ ఉప్సంహరుంచుకొనబడింది" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ ఉప్సంహరుంచుకొనడంలో విఫలం: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ సంపాదింపబడింది" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ సంపాదించుటలో విఫలం: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "{domain} డోమైన్ కొరకు సర్టిఫికేట్ ఉప్సంహరుంచుకొనబడింది" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు ధృవీకరణపత్రం నిర్మూలించడంలో విఫలం: {error}" @@ -2485,7 +2507,7 @@ msgstr "" "చాట్ సర్వర్\n" " (ejabberd)" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2495,7 +2517,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:" "domainnameఇలా కనిపిస్తుంది." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2546,7 +2568,7 @@ msgstr "" "లేదు.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2583,13 +2605,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 #, fuzzy #| msgid "Application enabled" msgid "Public registration enabled" msgstr "అనువర్తనం ఆమోదింపబడింది" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy #| msgid "Application disabled" msgid "Public registration disabled" @@ -2600,11 +2622,11 @@ msgstr "అనువర్తనం ఆమోదింపబడలేదు" msgid "MediaWiki" msgstr "మీడియావికీ" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "వికీ" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2615,7 +2637,7 @@ msgstr "" "వెబ్సైటు నిర్మించే ఒక ఉపకరం. మీరు మీడియావికీని ఉపయోగించి ఒక వికీ లాంటి వెబ్సైటును ఏర్పాటు చేస్కుని మీ " "స్నేహితులతో సంయుక్తంగా నోట్స్ తీసుకొనవచ్చు." -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2624,7 +2646,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2673,30 +2695,30 @@ msgstr "" "ఇది సశక్త పరిచినట్లయితే, ప్రవేశము నియంత్రించబడుతుంది. ఎవరికీ అయితే ఇప్పటికే ఖాతా ఉందో, వారే మీ వికీని " "చదవగలరు/మార్చగలరు. ప్రజా నమోదు కూడా ఆపివేయబడుతింది." -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "రహస్యపదం" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Application enabled" msgid "Public registrations enabled" msgstr "అనువర్తనం ఆమోదింపబడింది" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Application disabled" msgid "Public registrations disabled" msgstr "అనువర్తనం ఆమోదింపబడలేదు" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 #, fuzzy msgid "Private mode enabled" msgstr "PageKite ఎనేబుల్" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy msgid "Private mode disabled" msgstr "PageKite వికలాంగ" @@ -2706,13 +2728,13 @@ msgstr "PageKite వికలాంగ" msgid "Minetest" msgstr "మైన్ టెస్ట్" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 #, fuzzy #| msgid "Block Sandbox (Minetest)" msgid "Block Sandbox" msgstr "స్యాండ్ బాక్స్ ను అడ్డగించు (మైన్ పరీక్ష)" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, fuzzy, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2777,7 +2799,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "డిసేబుల్ లో ఉన్నప్పుడు, క్రీడాకారులు చనిపోయే లేదా ఏ రకమైన నష్టం అందుకోలేరు" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "చిరునామా" @@ -2786,30 +2808,87 @@ msgstr "చిరునామా" msgid "Port" msgstr "పోర్టు" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "మంబ్లు సేవిక మాటామంతి గాత్రం" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 #, fuzzy @@ -2817,33 +2896,33 @@ msgstr "ఆకృతీకరణ నవీకరించబడింది" msgid "MLDonkey" msgstr "మంకీస్ఫియర్" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 #, fuzzy #| msgid "File Sharing" msgid "Peer-to-peer File Sharing" msgstr "ఫైలు పంచుకొనుట" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" @@ -3025,11 +3104,11 @@ msgstr "కీ కీసేవకానికి ప్రచురించబ msgid "Error occurred while publishing key." msgstr "కీని ప్రచురించేటప్పుడు దోషం సంభవించింది." -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "మంబుల్" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 #, fuzzy #| msgid "" #| "Voice Chat \n" @@ -3039,7 +3118,7 @@ msgstr "" "స్వర సంభాషణ \n" " (Mumble)" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3047,7 +3126,7 @@ msgstr "" "మంబుల్ అనేది తక్కువ-జాప్యత, ఎన్క్రిప్టెడ్, అధిక నాణ్యతా వంటి విశిష్టలతో కూడిన ఒక ఓపెన్ సోర్స్ స్వర సంభాషణా " "సాఫ్ట్‌వేర్." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 #, fuzzy msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. 1Clients 2 మీ నమలు సర్వర్ కనెక్ట్ చేయవచ్చు మరియు Android పరికరాలు " "అందుబాటులో ఉన్నాయి." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "SSH సర్వర్ పాస్ వర్డ్" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "ప్లంబుల్" @@ -3066,6 +3157,12 @@ msgstr "ప్లంబుల్" msgid "Mumblefly" msgstr "ముంబుల్ ఫ్లై" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "పేరు సేవలు" @@ -3112,24 +3209,24 @@ msgstr "IPv{kind} పై DNSSEC ఉపయోగించు" msgid "Connection Type" msgstr "అనుసంధాన రకం" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "అనుసంధానం పేరు" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "భౌతిక సంవిధానం" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 #, fuzzy msgid "The network device that this connection should be bound to." msgstr "నెట్వర్కు పరికర ఈ కనెక్షన్ బంధం ఉండాలని" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "కంచుకోట క్షేత్రాం" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 #, fuzzy msgid "" "The firewall zone will control which services are available over this " @@ -3138,21 +3235,21 @@ msgstr "" "ఫైర్వాల్ జోన్ ఇది సేవలు ఇంటర్ఫేస్లు అందుబాటులో ఉన్నాయి నియంత్రిస్తాయి. నమ్మదగిన నెట్వర్కులలో మాత్రమే అంతర్గత " "ఎంచుకోండి." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "బహిర్గత" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "అంతర్గత" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPv4 చిరునామా ఇచ్చు పద్ధతి" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, fuzzy, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3163,39 +3260,39 @@ msgstr "" "{box_name}. \"భాగస్వామ్యం\" పద్దతి ఈ నెట్వర్క్ ఖాతాదారులతో ఆకృతీకరించుటకు మరియు దాని ఇంటర్నెట్ " "కనెక్షన్ భాగస్వామ్యం, ఆపోర్టును చేస్తుంది {box_name} 2 చట్టం" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "స్వయం చాలకం (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "పంచుకోబడ్డ" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "నెట్ మాస్క్" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "ఐచ్ఛిక విలువ. ఖాళీగా ఉంటే, చిరునామాపై ఆధారపడి ఒక డిఫాల్ట్ నెట్మాస్క్ ఉపయోగించబడుతుంది." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "గేట్వే" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "ఐచ్ఛిక విలువ." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS సేవకం" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 #, fuzzy msgid "" "Optional value. If this value is given and IPv4 addressing method is " @@ -3204,11 +3301,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv4 ప్రసంగిస్తున్న పద్ధతి \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "ద్వితీయ DNS సేవకం" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 #, fuzzy msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3217,11 +3314,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv4 ప్రసంగిస్తూ విధానం \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "IPv6 చిరునామా ఇచ్చు పద్ధతి" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, fuzzy, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3230,31 +3327,31 @@ msgstr "" "\"ఆటోమేటిక్\" పద్ధతులు ఒక క్లయింట్ మేకింగ్ ఈ నెట్వర్క్ నుండి {box_name} 1 ఆర్జనకు ఆకృతీకరణ " "చేస్తుంది." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 #, fuzzy msgid "Automatic" msgstr "స్వయంచాలక" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 #, fuzzy #| msgid "Automatic (DHCP)" msgid "Automatic, DHCP only" msgstr "స్వయం చాలకం (DHCP)" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "పట్టించుకోకండి" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 #, fuzzy msgid "Prefix" msgstr "ఉపసర్గ" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "1 మరియు 128 మధ్యగల విలువ." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 #, fuzzy msgid "" "Optional value. If this value is given and IPv6 addressing method is " @@ -3263,7 +3360,7 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇవ్వబడుతుంది ఉంటే మరియు IPv6 ప్రసంగిస్తున్న పద్ధతి \"ఆటోమేటిక్\" ఉంది, " "DHCP సర్వర్ అందించిన DNS సర్వర్లు విస్మరించబడుతుంది" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 #, fuzzy msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " @@ -3272,56 +3369,56 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv6 ప్రసంగిస్తూ విధానం \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "--ఎంచుకోండి--" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "నెట్వర్క్ యొక్క కనిపించే పేరు." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "విధం" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "ఇన్ఫ్రాస్ట్రక్చర్" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "ప్రాప్తి సూచి" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 #, fuzzy msgid "Ad-hoc" msgstr "తదర్థ" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 #, fuzzy msgid "Frequency Band" msgstr "ఫ్రీక్వెన్సీ బ్యాండ్" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "ఎ (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "బి/జి(2.4GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "మార్గం" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 #, fuzzy msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " @@ -3330,11 +3427,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఎంపిక ఫ్రీక్వెన్సీ బ్యాండ్ వైర్లెస్ ఇన్ ఛానెల్కు నిరోధించండి. ఖాళీ లేదా 0 విలువ స్వయంచాలక " "ఎంపిక అర్థం." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 #, fuzzy msgid "" "Optional value. Unique identifier for the access point. When connecting to " @@ -3344,22 +3441,22 @@ msgstr "" "ఐచ్ఛికము విలువ. ప్రవేశ బిందువు కోసం ప్రత్యేక ఐడెంటిఫైయర్. ఒక యాక్సెస్ పాయింట్ కనెక్ట్ చేసినప్పుడు, యాక్సెస్ " "పాయింట్ BSSID అందించిన మ్యాచ్లు మాత్రమే ఉంటే కనెక్ట్. ఉదాహరణ: 00: 11: 22: aa: BB: సిసి." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "ప్రామాణీకరణ విధం" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 #, fuzzy msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "వైర్లెస్ నెట్వర్క్ భద్రతతో కనెక్ట్ పాస్వర్డ్ను ఖాతాదారులకు అవసరం ఉంటే WPA ఎంచుకోండి." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA (వైఫై రక్షిత యాక్సెస్)" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "తెరచిన" @@ -3568,7 +3665,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "పద్దతి" @@ -3584,6 +3681,7 @@ msgstr "సేవిక" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "అప్రమేయం" @@ -3596,7 +3694,7 @@ msgid "This connection is not active." msgstr "ఈ అనుసంధానం చురుకుగాలేదు." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "భద్రత" @@ -3658,13 +3756,13 @@ msgstr "అంతరం" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "ఈథర్నెట్" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3711,13 +3809,13 @@ msgstr "సృష్టించు..." msgid "OpenVPN" msgstr "తెరచిన" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "స్వంత్ర అల్లిక వాస్తవప్రతిరూపం (OpenVPN)" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, fuzzy, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3733,14 +3831,14 @@ msgstr "" "మిగిలిన ఇంటర్నెట్ను యాక్సెస్ చేయవచ్చు మీ {box_name} 1 అనుసంధానించవచ్చు అదనపు భద్రత మరియు " "అనామకత్వం కోసం." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" "స్థూల వివరం దిగుమతి" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "సేవిక తెరవండిVPN అమలుచెయ్యి" @@ -3906,7 +4004,7 @@ msgstr "" "మీ pagekite సర్వర్ ఎంచుకోండి. డిఫాల్ట్ pagekite.net సర్వర్ ఉపయోగించడానికి \"pagekite.net\" " "సెట్." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 #, fuzzy msgid "Server port" msgstr "సర్వర్ పోర్ట్" @@ -4183,12 +4281,12 @@ msgstr "ఇపుడు మూసివేయండి" msgid "Privoxy" msgstr "ప్రివొక్సి" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 #, fuzzy msgid "Web Proxy" msgstr "వెబ్ ప్రాక్సీ (Privoxy)" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4198,7 +4296,7 @@ msgstr "" "నియంత్రించడం మరియు ప్రకటనలను మరియు ఇతర చెడ్డ ఇంటర్నెట్ వ్యర్థాలను తొలగించడం కోసం ఆధునిక ఫిల్టరింగ్ " "సామర్థ్యాలతో ఒక కాని క్యాచింగ్ వెబ్ ప్రాక్సీ. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4212,7 +4310,7 @@ msgstr "" "డాక్యుమెంటేషన్ http://config.privoxy.org/ లేదా http://p.p లో చూడవచ్చు." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "టీసీపీ{kind} పై{proxy} తో యాక్సిస్ {url} చేయండి" @@ -4221,12 +4319,12 @@ msgstr "టీసీపీ{kind} పై{proxy} తో యాక్సిస్ { msgid "Quassel" msgstr "క్వాసెల్" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 #, fuzzy msgid "IRC Client" msgstr "ఐ ర్ సి క్లయింట్ (Quassel)" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4237,7 +4335,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your supported client application అవసరం.\n" "రాడికల్ ఏ యూజర్ అయినా {box_name}లాగిన్ తో యాక్సెస్ చేయవచ్చు" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4354,7 +4452,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 #, fuzzy #| msgid "Configuration updated" msgid "Access rights configuration updated" @@ -4458,12 +4556,12 @@ msgstr "" msgid "Roundcube" msgstr "రౌండ్ క్యూబ్" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 #, fuzzy msgid "Email Client" msgstr "తపాల బంట్రౌతు(Roundcube)" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4474,7 +4572,7 @@ msgstr "" "ఇది MIME మద్దతు, చిరునామా పుస్తకం, ఫోల్డర్ తారుమారు, సందేశ శోధన మరియు అక్షరక్రమ తనిఖీ సహా ఒక " "ఇమెయిల్ క్లయింట్ నుండి మీరు పూర్తి కార్యాచరణను అందిస్తుంది." -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 msgid "" "You can access Roundcube from /roundcube. Provide the username and password of the email account " @@ -4484,7 +4582,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4498,13 +4596,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4512,7 +4610,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4565,25 +4663,25 @@ msgstr "పంచుకోబడ్డ" msgid "Action" msgstr "చర్యలు" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} తొలగించబడింది." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "పంచుకోబడ్డ" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4593,13 +4691,13 @@ msgstr "అనువర్తనం స్థాపించుటలో దో msgid "Searx" msgstr "సేర్క్స్" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "జాల సేవకం" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." @@ -4607,7 +4705,7 @@ msgstr "" "సెర్క్స్ అనేది గోప్యతను గౌరవించే ఒక మెటా-శోధన ఇంజిన్. ఇది బహుళ శోధన ఇంజిన్ల నుండి ఫలితాలను సమీకరించి, " "ప్రదర్శిస్తుంది." -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." @@ -4615,7 +4713,7 @@ msgstr "" "శోధన యంత్రాలు ద్వారా ట్రాకింగ్ మరియు ప్రొఫైలింగ్ను నివారించడానికి సెర్క్స్ ను ఉపయోగించవచ్చు. ఇది మాములుగా " "కుకీలను నిల్వ ఉంచుకోదు." -#: plinth/modules/searx/__init__.py:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "అంతర్జాలమును శోధింపుము" @@ -4647,16 +4745,16 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "ఆకృతీకరణ నవీకరించబడింది." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "కన్సోల్ లాగిన్ ని పరిమితించండి (సిఫార్సు)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4666,11 +4764,11 @@ msgstr "" "అవగలరు లేదా ఎస్ ఎస్ అహ్ ద్వారా . కన్సోల్ వాడుకదారులు మరింత అనుమతి లేకుండా కొన్ని సేవలు యాక్సెస్ " "చేయవచ్చు." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "ఫెయిల్2బ్యాన్ (సిఫారసుచేయబడినవి)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4687,7 +4785,7 @@ msgid "Show security report" msgstr "భద్రత" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4720,13 +4818,13 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error setting restricted access: {exception}" msgstr "సమయమండలం అమర్పులోపం: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -4759,11 +4857,11 @@ msgstr "" msgid "Shadowsocks" msgstr "షాడోసాక్స్" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "సాక్స్5 ప్రాక్సీ" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4772,7 +4870,7 @@ msgstr "" "షాడోసాక్స్ మీ ఇంటర్నెట్ ట్రాఫిక్ను రక్షించేందుకు రూపొందించబడిన ఒక తేలికైన మరియు సురక్షిత సాక్స్5 ప్రాక్సీ. " "ఇది ఇంటర్నెట్ వడపోత మరియు సెన్సార్షిప్ను దాటడానికి ఉపయోగించవచ్చు." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4781,7 +4879,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4792,26 +4890,26 @@ msgstr "" msgid "Recommended" msgstr "సిఫార్సు చేయబడింది" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 #, fuzzy #| msgid "Service" msgid "Server" msgstr "సేవ" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "సర్వర్ హోస్ట్ పేరు లేదా ఐపి చిరునామా" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 #, fuzzy msgid "Server port number" msgstr "సర్వర్ పోర్ట్" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "సమాచారాన్ని గుప్తీకరించాడానికి ఉపయోగించబడిన పాస్వర్డ్. తప్పకుండ సర్వర్ పాస్వర్డ్ తో సరిపోలాలి." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "గుప్తీకరించు పద్దతి. సర్వర్ లోని సెట్టింగ్‌తో సరిపోలాలి." @@ -4880,60 +4978,60 @@ msgstr "ఈ సేవ ఇప్పటికే ఉంది" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 #, fuzzy #| msgid "Add Service" msgid "Add share" msgstr "సేవ జోడించండి" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "ప్రస్తుతం ఏ షేర్లు ఏర్పాటు చేయబడలేదు." -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "డిస్క్ మార్గం" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 #, fuzzy #| msgid "Shared" msgid "Shared Over" msgstr "పంచుకోబడ్డ" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "గుంపులతో" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 #, fuzzy #| msgid "Shared" msgid "Share added." msgstr "పంచుకోబడ్డ" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 #, fuzzy #| msgid "Add Service" msgid "Add Share" msgstr "సేవ జోడించండి" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 #, fuzzy #| msgid "Shared" msgid "Share edited." msgstr "పంచుకోబడ్డ" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 #, fuzzy #| msgid "Edit User" msgid "Edit Share" msgstr "వినియోగదారి మార్పు" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 #, fuzzy #| msgid "{name} deleted." msgid "Share deleted." @@ -4999,51 +5097,51 @@ msgstr "సాఫ్ట్వేర్ సంస్థాపన స్నాప msgid "Enable or disable snapshots before and after software installation" msgstr "సాఫ్ట్వేర్ ఇన్స్టాలేషన్కు ముందు మరియు తర్వాత స్నాప్షాట్లను అనుమతించండి లేదా అనుమతి నిరాకరించండి" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 #, fuzzy #| msgid "Storage Snapshots" msgid "Hourly Snapshots Limit" msgstr "నిల్వ దృశ్యములు" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "ఒక గంటలో స్నాప్షాట్స్ ని ఇంతకు నియంత్రించుము." -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 #, fuzzy #| msgid "Delete Snapshots" msgid "Daily Snapshots Limit" msgstr "స్నాప్షాట్‌లను తొలగించు" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "ఒక రోజులో స్నాప్షాట్స్ ని ఇంతకు నియంత్రించుము." -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 #, fuzzy #| msgid "Delete Snapshots" msgid "Weekly Snapshots Limit" msgstr "స్నాప్షాట్‌లను తొలగించు" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "ఒక వారంలో స్నాప్షాట్స్ ని ఇంతకు నియంత్రించుము." -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "స్నాప్షాట్ల నెలవారీ పరిమితి" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "గరిష్టంగా ఒక నెలకు ఇన్ని స్నాప్షాట్లను ఉంచండి." -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 #, fuzzy #| msgid "Delete Snapshots" msgid "Yearly Snapshots Limit" msgstr "స్నాప్షాట్‌లను తొలగించు" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 #, fuzzy #| msgid "" #| "Keep a maximum of this many yearly snapshots. The default is 0 (disabled)." @@ -5129,13 +5227,13 @@ msgstr "నిల్వ దృశ్యములు" msgid "Created snapshot." msgstr "స్నాప్షాట్‌ సృష్టించబడినది." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "Configuration updated" msgid "Storage snapshots configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "చర్య లోపం:{0}{1}{2}" @@ -5245,88 +5343,132 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} బైట్లు" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} కిలోబైట్లు" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} మెగాబైట్లు" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} గిగాబైట్లు" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} టెరాబైట్లు" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 #, fuzzy #| msgid "Mumble server is running" msgid "The device is already unmounting." msgstr "మంబ్లు సేవిక నడుస్తుంది" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 #, fuzzy msgid "The device is already mounted." msgstr "ఈ సేవ ఇప్పటికే ఉంది" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 #, fuzzy #| msgid "Mumble server is not running" msgid "The device is not mounted." msgstr "మంబ్లు సేవిక నడవంలేదు" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "ఆతిథ్యనామం చెల్లనిది" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "డైరెక్టరీని దిగుమతి చేయు" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "డైరెక్టరీని దిగుమతి చేయు" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "కీని ప్రచురించండి" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" @@ -5399,12 +5541,12 @@ msgstr "" msgid "Syncthing" msgstr "సమకాలీకరించుచున్నది" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 #, fuzzy msgid "File Synchronization" msgstr "ఫైలు సమకాలీకరించబడుచున్నధి" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 #, fuzzy msgid "" "Syncthing is an application to synchronize files across multiple devices, e." @@ -5416,7 +5558,7 @@ msgstr "" "ఒక ఉపకరణంలో ఒక ఫైలు యొక్క తయారీ,మార్పులు, లేదా నిర్మూలిస్తే అది మిగిలిన అన్ని ఉపకరణాలలో దానికి " "సంబందించిన మార్పులు చెయ్యడం సమకాలీకరించడం" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5427,7 +5569,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" @@ -5437,11 +5579,11 @@ msgstr "ఈ అనువర్తనాన్ని నిక్షిప్త msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "పంపిణీ ఫైల్ నిల్వ" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5449,7 +5591,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5514,69 +5656,69 @@ msgstr "" "టార్ ప్రాజెక్ట్ మీరు టార్ బ్రౌజర్ ను ఉపయోగించాలని సిఫార్సు చేస్తున్నారు." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "దాచిన టార్ సర్వీస్" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 #, fuzzy #| msgid "Socks5 Proxy" msgid "Tor Socks Proxy" msgstr "సాక్స్5 ప్రాక్సీ" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "టార్ బ్రిడ్జ్ రిలే" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "టార్ రిలే పోర్ట్ అందుబాటులో ఉంది" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "టార్ ద్వారా {kind} లో {url} ను ఆక్సెస్ చెయ్యండి" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "టోర్ వాడుకను నిర్ధారించండి{url} టీ సి పి పై{kind}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "టోర్ ను ప్రారంభించండి" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "టార్ నెట్వర్క్కు కనెక్ట్ చేయడానికి అప్స్ట్రీమ్ వారది ఉపయోగించండి" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "అప్స్ట్రీమ్ బ్రిడ్జెస్" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5586,13 +5728,13 @@ msgstr "" "torproject.org/ నుండి కొన్ని బ్రిడ్జెస్ పొందవచ్చు మరియు ఇక్కడ బ్రిడ్జె సమాచారాన్ని కాపీ / పేస్ట్ " "చెయ్యండి. ప్రస్తుతం మద్దతిచ్చే ట్రాన్స్పోర్ట్ లు none, obfs3, obfs4 మరియు scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 #, fuzzy #| msgid "Enable network time" msgid "Enable Tor relay" msgstr "అల్లిక సమయం చేతనించు" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5602,11 +5744,11 @@ msgstr "" "ప్రారంభించినప్పుడు, మీ {box_name} 1 టోర్ రిలేని అమలు చేస్తుంది మరియు టార్ నెట్వర్క్కి బ్యాండ్విడ్త్ని దానం " "చేస్తుంది. మీరు 2 megabits / s కంటే ఎక్కువ అప్లోడ్ మరియు డౌన్లోడ్ బ్యాండ్విడ్త్ ఉంటే దీన్ని చేయండి." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "టార్ వంతెన రిలేను ప్రారంభించండి" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5616,31 +5758,31 @@ msgstr "" "ప్రచురించబడుతుంది, ఇది ఈ నోడ్ను సెన్సార్ చేయడానికి కష్టతరం చేస్తుంది.ఇతరులు సెన్సార్షిప్ను " "తప్పించుకునేందుకు ఇది దోహదపడుతుంది." -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "టార్ దాచిన సేవని ప్రారంభించండి" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" "ఎంపిక చేసిన సేవలను (వికీ లేదా చాట్ వంటివి) దాని స్థానాన్ని బహిర్గతం చేయకుండా ఒక రహస్య సేవ {box_name} " "1 ను అనుమతిస్తుంది. ఇది ఇంకా బలమైన పేరు కోసం ఉపయోగించకండి." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "టార్ పై సాఫ్ట్వేర్ ప్యాకేజీలను డౌన్లోడ్ చేయండి" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5649,7 +5791,7 @@ msgstr "" "ప్రారంభించబడినప్పుడు, సంస్థాపనలు మరియు నవీకరణలు కోసం సాఫ్ట్వేర్ టార్ నెట్వర్క్ ద్వారా డౌన్లోడ్ " "చేయబడుతుంది. ఇది సాఫ్ట్ వేర్ డౌన్లోడ్ సమయంలో గోప్యత మరియు భద్రత యొక్క డిగ్రీని జతచేస్తుంది." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "అప్స్ట్రీమ్ వంతెనలను ఉపయోగించడానికి కనీసం ఒక అప్స్ట్రీమ్ వంతెనను పేర్కొనండి." @@ -5702,7 +5844,7 @@ msgstr "టిసిపి పోర్ట్ 9050 పై ఒక టార్ msgid "Transmission" msgstr "ప్రసారం" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5710,33 +5852,26 @@ msgstr "" "బిట్ టోర్రెంట్ పీర్-టు-పీర్ ఫైల్ షేరింగ్ ప్రోటోకాల్. ట్రాన్స్మిషన్ డెమోన్ బిట్ టోర్రెంట్ ఫైల్ భాగస్వామ్యాన్ని నిర్వహిస్తుంది. " "బిట్ టోర్రెంట్ అజ్ఞాత కాదని గమనించండి." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "డైరెక్టరీని దిగుమతి చేయు" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "టైనీ టైనీ RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "న్యూస్ ఫీడ్ రీడర్" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Cockpit will be available from /" @@ -5753,14 +5888,14 @@ msgstr "" "ద్వారా పొందవచ్చు {box_name}.\n" "అంగీకార సమాచారం మరియు సిస్టమ్ మార్చడం సామర్ధ్యాలు నిర్వాహక సమూహం చెందిన వినియోగదారులకు పరిమితం." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "న్యూస్ ఫీడ్‌లను చదవడం మరియు చందాదారునిగా చేరు" @@ -5770,7 +5905,7 @@ msgstr "న్యూస్ ఫీడ్‌లను చదవడం మరి msgid "Tiny Tiny RSS (Fork)" msgstr "టైనీ టైనీ RSS" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "నవీకరణ యూ.ఆర్.ఎల్" @@ -5842,18 +5977,18 @@ msgstr "అప్గ్రేడ్ ప్రక్రియ ప్రారం msgid "Starting upgrade failed." msgstr "నవీకరణ ప్రారంభం విఫలమైంది." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "వినియోగదారులు మరియు సమూహాలు" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5861,7 +5996,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ" @@ -5870,15 +6005,15 @@ msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ" msgid "Access to all services and system settings" msgstr "అన్ని సేవలకు మరియు వ్యవస్థ అమరికలకు అనుమతించు" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "యూజర్ పేరు తీసుకోబడింది లేదా రిజర్వ్ చేయబడింది." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "అనుమతులు" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5887,59 +6022,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి సృష్టించడంలో విఫలమైంది." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "వినియోగదారుని {group} సముహానికి జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పేరుమార్పులో విఫలం." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "సమూహంలోంచి వినియోగదారుని తొలగించడంలో విఫలం." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "SSH కీలను సెట్ చేయడం సాధ్యం కాలేదు." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పాస్‌వర్డ్ మార్పిడి విఫలం." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "కొత్త వాడుకరి ను అడ్మిన్ సమూహంలో జోడించడం విఫలమైనది." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "console ప్రవేశమును పరిమితి చెయడంలొ విఫలమైంది." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "వాడుకరి ఖాతా సృస్టించబడింది, మీరు లాగిన్ చేయబడ్డారు" @@ -5955,12 +6090,12 @@ msgstr "పాస్‌వర్డ్‌ను సేవ్ చేయి" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "వినియోగదారుని సృష్టించు" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "వినియోగదారుని తొలగించు" @@ -5992,7 +6127,7 @@ msgid "Create Account" msgstr "ఖాతా సృష్టించు" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "వినియోగదారులు" @@ -6020,62 +6155,62 @@ msgstr "" msgid "Save Changes" msgstr "మార్పులను భద్రపరుచు" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "వినియోగదారి %(username)s సృష్టించబడ్డారు." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "వినియోగదారి %(username)s నావీకరించబడ్డాడు." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "వినియోగదారి మార్పు" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "వినియోగదారి {user} తొలగించబడ్డాడు." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వినియోగదారి తొలగింపు విఫలం." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "పాస్‌వర్డ్ మార్చు" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "పిపిపిఒఇ" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "సాధారణమైన" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "సంస్థాపన ఒక పొరపాటు జరిగింది" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "వ్యవస్థాపిస్తోంది" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "దిగుమతి అవుతోంది" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "ప్రసార మాధ్యమం మార్పు" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "ఆకృతీకరణ ఫైలు: {file}" @@ -6118,13 +6253,13 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, fuzzy, python-format #| msgid "Service discovery server is running" msgid "Service %(service_name)s is running." msgstr "సేవ ఆవిష్కరణ సేవికను నడుపుతోంది" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, fuzzy, python-format #| msgid "Service discovery server is not running" msgid "Service %(service_name)s is not running." @@ -6244,6 +6379,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "నిక్షిప్తం" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6329,46 +6468,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "నిక్షిప్తం" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "ఈ అనువర్తనాన్ని నిక్షిప్తం చేయాలా?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "ఈ అనువర్తనానికి నవీకరణ అవసరం. ఇప్పుడే నవీకరిస్తారా?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "ప్రస్తుతం ఈ అనువర్తనం మీ పంపిణీకి అందుబాటులో లేదు." -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "నిక్షిప్తం చేయు" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "ఇన్స్తల్ల్ తర్వాత ప్రక్రియ జరుగుతోంది" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, fuzzy, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "సంస్థాపన %(package_names)s%:(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s %% పూర్తి" @@ -6382,15 +6517,15 @@ msgstr "వెబ్ క్లయింట్ ని ప్రారంభిం msgid "Client Apps" msgstr "ఐ ర్ సి క్లయింట్ (Quassel)" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "అనువర్తనం ఆమోదింపబడింది" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "అనువర్తనం ఆమోదింపబడలేదు" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" @@ -7251,9 +7386,6 @@ msgstr "" #~ msgid "ikiwiki wikis and blogs" #~ msgstr "వికీలు మరియు బ్లాగ్ లు Ikiwik" -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "మంబ్లు సేవిక మాటామంతి గాత్రం" - #~ msgid "Enable Mumble daemon" #~ msgstr "సూత్రధారి మంబ్లు అమలుచెయ్యి" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index cf11b2ea7..fa1a133d8 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-08-08 00:22+0000\n" "Last-Translator: Mesut Akcan \n" "Language-Team: Turkish /" @@ -683,11 +683,33 @@ msgstr "" "kullanılabilir. Hassas bilgiler ve sistem değiştirme kabiliyeti, yönetici " "(yani admin) grubuna ait kullanıcılar ile sınırlıdır." +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "Erişim Noktası" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Genel Yapılandırma" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -695,13 +717,13 @@ msgstr "Genel Yapılandırma" msgid "Configure" msgstr "Yapılandır" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Alan Adı" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "Geçersiz alan ismi" @@ -730,11 +752,11 @@ msgstr "" "başlayıp sona ermesi gerekir ve sadece alfabe harfleri, sayılar ve tireler " "içerebilir. Toplam uzunluğun 63 karakter veya daha azı olması gerekmektedir." -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "Geçersiz makine ismi" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -751,11 +773,11 @@ msgstr "" "kalmalıdır. Her grubun uzunluğu 63 karakter ya da daha azı olmalıdır. Alan " "adının toplam uzunluğu 253 karakter ya da daha azı olmalıdır." -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Web Sunucusu Ana Sayfası" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -765,51 +787,51 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Makine isminin ayarlanmasında hata: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "Makine ismi ayarlandı" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "Alan adının ayarlanmasında hata: {exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "Alan adı ayarlandı" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "Web sunucusu ana sayfasını ayarlama hatası: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "Gelişmiş mod değiştirilirken hata oluştu: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -817,7 +839,7 @@ msgstr "" msgid "Coquelicot" msgstr "" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "Dosya paylaşımı" @@ -923,16 +945,16 @@ msgstr "Saat dilimi ayarlandı" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "BitTorrent Web İstemcisi" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge, ağ arayüzü sunan bir BitTorrent istemcisidir." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1654,7 +1676,7 @@ msgstr "Yeni depo oluştur" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" @@ -1743,41 +1765,41 @@ msgstr "Bu anlık daimi olarak silinsin mi?" msgid "Delete %(name)s" msgstr "%(name)s unsurunu sil" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "Depo kaldırıldı." -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "Yapılandırma sırasında bir hata meydana geldi." -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "Depo kaldırıldı." -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create Repository" msgid "Edit repository" msgstr "Depo oluştur" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "Yapılandırma sırasında bir hata meydana geldi." -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} silindi." -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "{name} silinemedi: {error}" @@ -1786,8 +1808,8 @@ msgstr "{name} silinemedi: {error}" msgid "Documentation" msgstr "Belgelendirme" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "Kullanım Kılavuzu" @@ -1950,7 +1972,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "Daha fazla bilgi edin..." @@ -2090,11 +2112,11 @@ msgstr "" msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "Anonimlik Ağı" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2102,7 +2124,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Vikisini okuyunuz." -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Uygulamayı etkinleştir" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -2141,7 +2163,7 @@ msgstr "Başlat" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "Anonim torrentler" @@ -2177,11 +2199,11 @@ msgstr "" msgid "ikiwiki" msgstr "ikiwiki" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Viki ve Blog" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2200,7 +2222,7 @@ msgstr "" "bloglar ve vikiler (oluşturulduklarında) /ikiwiki " "adresinde erişilebilir olacaklardır." -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, fuzzy, python-brace-format #| msgid "" #| "Only {box_name} users in the admin group can create and " @@ -2219,22 +2241,22 @@ msgstr "" "href=\"/plinth/sys/users\">Kullanıcı Yapılandırması bölümünde bu " "izinleri değiştirebilir ya da yeni kullanıcı ekleyebilirsiniz." -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "Viki uygulamalarını görüntüle ve düzenle" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "Tür" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "Yönetici Hesap İsmi" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "Yönetici Hesap Parolası" @@ -2276,33 +2298,33 @@ msgstr "" "yorumları silecektir. Bu viki ya da blogu daimi olarak silmek istiyor " "musunuz?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "{name} isimli viki oluşturuldu." -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "Viki oluşturulamadı: {error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "{name} isimli blog oluşturuldu." -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "Blog oluşturulamadı: {error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} silindi." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2312,17 +2334,17 @@ msgstr "{name} silinemedi: {error}" msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby Sunucusu" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" "infinoted, işbirliğine izin veren bir metin düzenleyici olan Gobby için bir " "sunucudur." -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2354,11 +2376,11 @@ msgstr "" msgid "JSXC" msgstr "JSXC" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "Sohbet İstemcisi" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2481,7 +2503,7 @@ msgstr "" "Hiçbir alan yapılandırılmamış. Onlardan sertifika edinmek için alan " "yapılandırın." -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " @@ -2490,30 +2512,30 @@ msgstr "" "{domain} alanı için sertifika başarılı bir şekilde iptal edildi. Bu işlemin " "başlaması biraz zaman alabilir." -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" "{domain} alanı için sertifikanın iptal edilmesi başarısız oldu: {error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "{domain} alanı için sertifika başarılı bir şekilde edinildi" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "{domain} alanı için sertifika edinilemedi: {error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "{domain} alanı için sertifika başarılı bir şekilde silindi" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} alanı için sertifikanın silinmesi başarısız oldu: {error}" @@ -2522,7 +2544,7 @@ msgstr "{domain} alanı için sertifikanın silinmesi başarısız oldu: {error} msgid "Matrix Synapse" msgstr "Matrix Synapse" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2539,7 +2561,7 @@ msgstr "" "kullanıcılar federasyon sayesinde tüm diğer Matrix sunucularındaki " "kullanıcılarla iletişimde bulunabilirler." -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @kullanıcıismi:" "alanismi şeklinde olacaktır." -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2591,7 +2613,7 @@ msgstr "" " olarak desteklenmemektedir.\n" " " -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2628,11 +2650,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "Herkese açık kayıt etkinleştirildi" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "Herkese açık kayıt devre dışı bırakıldı" @@ -2641,11 +2663,11 @@ msgstr "Herkese açık kayıt devre dışı bırakıldı" msgid "MediaWiki" msgstr "MediaWiki" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "Viki" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2658,7 +2680,7 @@ msgstr "" "not almak ya da herhangi bir proje için arkadaşlarınızla işbirliği yapmak " "için kullanabilirsiniz." -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 #, fuzzy #| msgid "" #| "This MediaWiki instance comes with a randomly generated administrator " @@ -2679,7 +2701,7 @@ msgstr "" "hesabı oluşturmak için Özel:HesapOluştur sayfasına gidebilirsiniz" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 #, fuzzy #| msgid "" #| "Anyone with a link to this Wiki can read it. Only users that are logged " @@ -2727,29 +2749,29 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "Parola güncellendi" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Public registration enabled" msgid "Public registrations enabled" msgstr "Herkese açık kayıt etkinleştirildi" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Public registration disabled" msgid "Public registrations disabled" msgstr "Herkese açık kayıt devre dışı bırakıldı" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 #, fuzzy #| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "PageKite etkinleştirildi" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy #| msgid "PageKite disabled" msgid "Private mode disabled" @@ -2760,11 +2782,11 @@ msgstr "PageKite devre dışı" msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "Blok Kum Havuzu" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2820,7 +2842,7 @@ msgstr "" "Devre dışı bırakıldığında, oyuncular ölemez ve hiçbir zarar göremezler." #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "Adres" @@ -2829,22 +2851,79 @@ msgstr "Adres" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "Azami oyuncu sayısı yapılandırması güncellendi" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "Yaratıcı kip kurulumu güncellendi" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "PVP kurulumu güncellendi" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "Zarar verme kurulumu güncellendi" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Mumble Ses ile Sohbet Sunucusu" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 #, fuzzy @@ -2852,33 +2931,33 @@ msgstr "Zarar verme kurulumu güncellendi" msgid "MLDonkey" msgstr "Monkeysphere" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 #, fuzzy #| msgid "File Synchronization" msgid "Peer-to-peer File Sharing" msgstr "Dosya eşleşmesi" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 #, fuzzy #| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" @@ -3064,15 +3143,15 @@ msgstr "Anahtar, anahtar sunucusuna yayınlandı." msgid "Error occurred while publishing key." msgstr "Anahtarın yayınlanmasında bir hata meydana geldi." -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "Ses ile Sohbet" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." @@ -3080,7 +3159,7 @@ msgstr "" "Mumble, açık kaynak, düşük gecikmeli, şifreli, yüksek kaliteli sesle sohbet " "yazılımıdır." -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3090,6 +3169,18 @@ msgstr "" "bağlanabilirsiniz. Mumble'a masaüstünden ya da Android cihazlarından " "bağlanmak için istemciler mevcuttur." +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "SSH sunucu parolası" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "Plumble" @@ -3098,6 +3189,12 @@ msgstr "Plumble" msgid "Mumblefly" msgstr "Mumblefly" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "Parola başarılı bir şekilde değiştirildi." + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "İsim Servisleri" @@ -3144,23 +3241,23 @@ msgstr "IPv{kind} üzerinde DNSSEC kullanılıyor" msgid "Connection Type" msgstr "Bağlantı Türü" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "Bağlantı İsmi" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "Fiziki Arayüz" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "Bu bağlantının bağlanacağı ağ cihazı." -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "Güvenlik Duvarı Alanı" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3168,21 +3265,21 @@ msgstr "" "Güvenlik duvarı alanı bu arayüzlerde hangi servislerin mevcut olacağını " "kontrol eder. Dahiliyi sadece güvenilir şebekeler için seçin." -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "Harici" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "Dahili" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPv4 Adresleme Metodu" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3194,19 +3291,19 @@ msgstr "" "kutusunun bir yönlendirici olarak iş görmesini, bu ağdaki istemcileri " "yapılandırmasını ve İnternet bağlantısını paylaşmasını sağlayacaktır." -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "Otomatik (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "Paylaşılan" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "Ağ Maskesi" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3214,21 +3311,21 @@ msgstr "" "Seçime dayalı değer. Boş bırakılırsa adrese dayalı varsayılan bir ağ maskesi " "kullanılacaktır." -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "Geçit" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "Seçime dayalı değer." -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS Sunucusu" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3237,11 +3334,11 @@ msgstr "" "\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " "gelinecektir." -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "İkinci DNS Sunucusu" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3250,11 +3347,11 @@ msgstr "" "\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " "gelinecektir." -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "IPv6 Adresleme Metodu" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3263,27 +3360,27 @@ msgstr "" "\"Otomatik\" metodları {box_name} kutusunun yapılandırmasını bu ağdan " "almasını sağlayacak ve onu bir istemci yapacaktır." -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "Otomatik" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "Otomatik, sadece DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "Yok say" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "Önek" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "1 ilâ 128 arasında bir değer." -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3292,7 +3389,7 @@ msgstr "" "\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " "gelinecektir." -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3301,54 +3398,54 @@ msgstr "" "\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " "gelinecektir." -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- seç --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "Şebekenin görünür ismi." -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "Kip" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "Altyapı" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "Erişim Noktası" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Geçici" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "Frekans Bandı" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3356,11 +3453,11 @@ msgstr "" "Seçime dayalı değer. Seçili frekans bandına sınırlanacak kablosuz kanal. Boş " "ya da 0 değeri otomatik seçim anlamına gelir." -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3370,11 +3467,11 @@ msgstr "" "noktasına bağlantı kurulduğunda, sadece erişim noktasının BSSID'si " "sağlananla eşleşiyorsa bağlanın. Örnek: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "Kimlik Doğrulama Kipi" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3382,11 +3479,11 @@ msgstr "" "Eğer kablosuz ağ güvenli ise ve istemcilerin bağlantı için parolaları " "olmasını gerektiriyorsa WPA'yi seçin." -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "Açık" @@ -3595,7 +3692,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "Metot" @@ -3611,6 +3708,7 @@ msgstr "DNS sunucusu" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "Varsayılan" @@ -3623,7 +3721,7 @@ msgid "This connection is not active." msgstr "Bu bağlantı etkin değildir." #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "Güvenlik" @@ -3686,13 +3784,13 @@ msgstr "Aralık" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3737,11 +3835,11 @@ msgstr "Oluştur..." msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "Sanal Özel Şebeke" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3758,13 +3856,13 @@ msgstr "" "servisleri kullanabilirsiniz. Aynı zamanda ek güvenlik ve anonimlik için " "İnternet'in geri kalanına {box_name} vasıtasıyla erişebilirsiniz." -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "Profil İndir" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "OpenVPN sunucusunu etkinleştir" @@ -3941,7 +4039,7 @@ msgstr "" "PageKite sunucunuzu seçin. Varsayılan pagekite.net sunucusunu kullanmak için " "\"pagekite.net\" değerini kullanın." -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "Sunucu portu" @@ -4213,11 +4311,11 @@ msgstr "Şimdi Kapat" msgid "Privoxy" msgstr "Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "Ağ Vekil Sunucusu" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4228,7 +4326,7 @@ msgstr "" "gelişmiş filtreleme özellikleri bulunan ve önbelleğe veri almayan bir ağ " "vekil sunucusudur. " -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4244,7 +4342,7 @@ msgstr "" "org/ veya http://p.p adresinde " "görebilirsiniz." -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "{url} konumuna {proxy} vekili vasıtasıyla tcp{kind} üzerinden eriş" @@ -4253,11 +4351,11 @@ msgstr "{url} konumuna {proxy} vekili vasıtasıyla tcp{kind} üzerinden eriş" msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "IRC İstemcisi" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4274,7 +4372,7 @@ msgstr "" "da daha fazla Quassel istemcileri masaüstünden ya da mobil telefondan ona " "bağlanmak ve ondan bağlantıyı kesmek için kullanılabilir." -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. " @@ -4577,7 +4675,7 @@ msgstr "" "tavsiye edilir), sunucu alanını imaps://imap.example.com gibi " "doldurun." -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4596,13 +4694,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4610,7 +4708,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4663,25 +4761,25 @@ msgstr "Paylaşılan" msgid "Action" msgstr "Eylemler" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} silindi." -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Uygulamanın kurulmasında hata: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "Paylaşılan" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4691,25 +4789,25 @@ msgstr "Uygulamanın kurulmasında hata: {error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "Web Sunucusu" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4745,16 +4843,16 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "Kurulum güncellendi." -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "Konsol girişlerini kısıtla (tavsiye edilir)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4765,11 +4863,11 @@ msgstr "" "kullanıcılarının bazı hizmetlere ek izne gerek olmadan erişebilmesi mümkün " "olabilir." -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "Fail2Ban (tavsiye edilir)" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4787,7 +4885,7 @@ msgid "Show security report" msgstr "Güvenlik" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4820,12 +4918,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Kısıtlı erişimin ayarlanmasında hata: {exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "Güvenlik yapılandırması güncellendi" @@ -4862,11 +4960,11 @@ msgstr "" msgid "Shadowsocks" msgstr "Shadowsocks" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "Socks5 Vekil Sunucusu" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " "your Internet traffic. It can be used to bypass Internet filtering and " @@ -4876,7 +4974,7 @@ msgstr "" "bir SOCKS5 vekil sunucusudur. İnternet filtreleme ve sansürünü atlatmak için " "kullanılabilir." -#: plinth/modules/shadowsocks/__init__.py:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4889,7 +4987,7 @@ msgstr "" "çalıştıracaktır. Yerel cihazlar bu vekil sunucuya bağlanacaktır ve verileri " "şifrelenip Shadowsocks sunucusu aracılığıyla aktarılacaktır." -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4903,25 +5001,25 @@ msgstr "" msgid "Recommended" msgstr "Tavsiye edilir" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "Sunucu" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "Sunucu makine ismi ya da IP adresi" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "Sunucu port numarası" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" "Verileri şifrelemek için kullanılacak parola. Sunucu parolasıyla eşleşmesi " "gerekir." -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "Şifreleme metodu. Sunucudaki ayarla eşleşmesi gerekir." @@ -4986,62 +5084,62 @@ msgstr "Bu servis zaten mevcuttur" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 #, fuzzy #| msgid "Add Service" msgid "Add share" msgstr "Servis Ekle" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 #, fuzzy #| msgid "Shared" msgid "Shared Over" msgstr "Paylaşılan" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 #, fuzzy #| msgid "Groups" msgid "With Groups" msgstr "Gruplar" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 #, fuzzy #| msgid "Shared" msgid "Share added." msgstr "Paylaşılan" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 #, fuzzy #| msgid "Add Service" msgid "Add Share" msgstr "Servis Ekle" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 #, fuzzy #| msgid "Shared" msgid "Share edited." msgstr "Paylaşılan" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 #, fuzzy #| msgid "Edit User" msgid "Edit Share" msgstr "Kullanıcıyı Düzenle" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 #, fuzzy #| msgid "{name} deleted." msgid "Share deleted." @@ -5117,51 +5215,51 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 #, fuzzy #| msgid "Storage Snapshots" msgid "Hourly Snapshots Limit" msgstr "Depolama Anlıkları" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 #, fuzzy #| msgid "Delete Snapshots" msgid "Daily Snapshots Limit" msgstr "Anlıkları Sil" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 #, fuzzy #| msgid "Delete Snapshots" msgid "Weekly Snapshots Limit" msgstr "Anlıkları Sil" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 #, fuzzy #| msgid "Delete Snapshots" msgid "Yearly Snapshots Limit" msgstr "Anlıkları Sil" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5242,13 +5340,13 @@ msgstr "Depolama Anlıkları" msgid "Created snapshot." msgstr "Anlık oluşturuldu." -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "Timeline Snapshots configuration updated" msgid "Storage snapshots configuration updated" msgstr "Zaman Çizelgesi Anlıklarının yapılandırması güncellendi" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "Eylem hatası: {0} [{1}] [{2}]" @@ -5362,89 +5460,133 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bayt" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "repro servisi çalışmaktadır" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "Bu servis zaten mevcuttur" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro servisi çalışmamaktadır" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "Geçersiz makine ismi" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "İndirme klasörü" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "İndirme klasörü" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "Anahtarı Yayınla" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" @@ -5521,11 +5663,11 @@ msgstr "" msgid "Syncthing" msgstr "Syncthing" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "Dosya eşleşmesi" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5537,7 +5679,7 @@ msgstr "" "oluşturulması, değiştirilmesi ya da silinmesi, Syncthing çalıştıran diğer " "tüm cihazlarda da otomatik olarak meydana gelecektir." -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5555,7 +5697,7 @@ msgstr "" "{box_name} üzerindeki ağ arayüzü sadece \"admin\" yani yönetici grubuna ait " "kullanıcılar tarafından kullanılabilir." -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" @@ -5565,11 +5707,11 @@ msgstr "Bu uygulama kurulsun mu?" msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "Dağıtılmış Dosya Depolaması" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5581,7 +5723,7 @@ msgstr "" "bağımsız güvenlik kullanır. Bazı düğümler arızalansa bile dosyalarınız kalan " "düğümlerden alınabilir." -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5649,58 +5791,58 @@ msgstr "" "href=\"https://www.torproject.org/download/download-easy.html\">Tor " "Tarayıcısını kullanmanızı tavsiye eder." -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor Gizli Servisi" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 #, fuzzy #| msgid "Socks5 Proxy" msgid "Tor Socks Proxy" msgstr "Socks5 Vekil Sunucusu" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Tor Köprü Aktarması" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Tor geçit portu mevcuttur" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "Obfs3 taşıma kayıtlıdır" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "Obfs4 taşıma kayıtlıdır" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "{url} bağlantısına tcp{kind} üzerinden Tor vasıtasıyla eriş" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "tcp{kind} üzerinden {url} konumunda Tor kullanımını teyit et" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "Şu biçemde geçerli bir köprü girin: [taşıma] IP:ORPort [parmakizi]" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "Tor'u Etkinleştir" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "Tor şebekesine bağlanmak için upstream köprüleri kullan" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " @@ -5711,11 +5853,11 @@ msgstr "" "ağına bağlantıları engelliyor ya da sansürlüyorsa kullanın. Bu, aktarım " "kiplerini devre dışı bırakacaktır." -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "Upstream köprüler" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " @@ -5726,11 +5868,11 @@ msgstr "" "yapıştırabilirsiniz. Güncel olarak desteklenen taşımalar şunlardır: hiçbiri, " "obfs3, obfs4 ve scamblesuit." -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "Tor aktarımını etkinleştir" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5741,11 +5883,11 @@ msgstr "" "şebekesine bant genişliği bağışlayacaktır. Bunu, saniyede 2 megabitten fazla " "indirme ve gönderme bant genişliğiniz varsa yapınız." -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "Tor köprü aktarmasını etkinleştir" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5756,20 +5898,20 @@ msgstr "" "sansürlenmesini zorlaştıracaktır. Bunu yapmanız, başkalarının sansürü " "aşmasına yardımcı olur." -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "Tor Gizli Servisi Etkinleştir" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" @@ -5777,11 +5919,11 @@ msgstr "" "servisleri konumunu ortaya çıkarmadan sağlamasına imkân verir. Güçlü " "anonimlik için henüz kullanmayın." -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "Yazılım paketlerini Tor üzerinden indir" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5791,7 +5933,7 @@ msgstr "" "üzerinden indirilecektir. Bu, yazılım indirmeleri sırasında bir derece " "güvenlilik ve gizlilik ekler." -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "Upstream köprüleri kullanmak için en az bir upstream köprü belirtiniz." @@ -5847,7 +5989,7 @@ msgstr "" msgid "Transmission" msgstr "Transmission" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5856,29 +5998,19 @@ msgstr "" "BitTorrent dosya paylaşımını idare eder. BitTorrent'ın anonim olmadığını " "unutmayın." -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "İndirme klasörü" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"İndirmelerin kaydedilecekleri klasör. Varsayılan klasörü değiştirirseniz, " -"yeni klasörün var olduğundan ve \"debian-transmission\" kullanıcısı " -"tarafından yazılabilir olduğundan emin olun." - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "Tiny Tiny RSS" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "Haber Besleme Okuyucusu" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5888,7 +6020,7 @@ msgstr "" "ve haber toplamaları herhangi bir yerden okumaya imkân sağlamak için " "tasarlanmış bir haber besleme (RSS/Atom) okuyucusu ve toplayıcısıdır." -#: plinth/modules/ttrss/__init__.py:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5903,7 +6035,7 @@ msgstr "" "users\">{box_name} kullanıcısı, ki oturumu olmalıdır tarafından " "kullanılabilir." -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 #, fuzzy #| msgid "" #| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " @@ -5916,7 +6048,7 @@ msgstr "" "Tiny Tiny RSS ile mobil ya da masaüstü uygulama kullanırken bağlantı için /tt-rss-app URL'ini kullanın." -#: plinth/modules/ttrss/__init__.py:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "Haber beslemelerini oku ve onlara abone ol" @@ -5926,7 +6058,7 @@ msgstr "Haber beslemelerini oku ve onlara abone ol" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "Güncelle" @@ -6008,18 +6140,18 @@ msgstr "Yükseltme süreci başlamıştır." msgid "Starting upgrade failed." msgstr "Yükseltmenin başlatılması başarısız oldu." -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "Kullanıcılar ve Gruplar" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -6027,7 +6159,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "\"{search_item}\" LDAP unsurunu kontrol et" @@ -6036,15 +6168,15 @@ msgstr "\"{search_item}\" LDAP unsurunu kontrol et" msgid "Access to all services and system settings" msgstr "Tüm servislere ve sistem ayarlarına erişim" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "Kullanıcı ismi zaten alınmış ya da ayrılmıştır." -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "İzinler" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6058,20 +6190,20 @@ msgstr "" "servislere giriş yapabilecektir. Aynı zamanda sisteme SSH aracılığıyla giriş " "yapıp yönetici izinlerine (sudo) erişebileceklerdir." -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "LDAP kullanıcısı oluşturması başarısız oldu." -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "{group} grubuna yeni kullanıcı ilâve edilmesi başarısız oldu." -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6082,39 +6214,39 @@ msgstr "" "çok anahtar girebilirsiniz, her anahtarı yeni bir satırda girin. Boş " "satırlar ve # ile başlayan satırlar görmezden gelinecektir." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "LDAP kullanıcısının tekrar adlandırılması başarısız oldu." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "Kullanıcının gruptan kaldırılması başarısız oldu." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "Kullanıcının gruba eklenmesi başarısız oldu." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "SSH anahtarları ayarlanamadı." -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "LDAP kullanıcı parolasının değiştirilmesi başarısız oldu." -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "Yeni kullanıcının admin (yönetici) grubuna eklenmesi başarısız oldu." -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "Konsol erişiminin kısıtlanması başarısız oldu." -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "Kullanıcı hesabı oluşturuldu, artık giriş yaptınız" @@ -6130,12 +6262,12 @@ msgstr "Parolayı Kaydet" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "Kullanıcı Oluştur" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "Kullanıcıyı Sil" @@ -6168,7 +6300,7 @@ msgid "Create Account" msgstr "Hesap Oluştur" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "Kullanıcılar" @@ -6196,62 +6328,62 @@ msgstr "" msgid "Save Changes" msgstr "Değişiklikleri Kaydet" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "%(username)s kullanıcısı oluşturuldu." -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "%(username)s kullanıcısı güncellendi." -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "Kullanıcıyı Düzenle" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "{user} kullanıcısı silindi." -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "LDAP kullanıcısının silinmesi başarısız oldu." -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "Parolayı Değiştir" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "Parola başarılı bir şekilde değiştirildi." -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "Jenerik" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "Kurulum sırasında hata" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "kuruluyor" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "indiriliyor" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "ortam değiştirme" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "Yapılandırma dosyası: {file}" @@ -6311,12 +6443,12 @@ msgstr "" "\">hata izleyicisinde rapor edin ki sorunu giderebilelim. Hata raporuna " "durum kütüğünü eklemeyi unutmayınız." -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "%(service_name)s servisi çalışmaktadır." -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "%(service_name)s servisi çalışmamaktadır." @@ -6431,6 +6563,10 @@ msgstr "" "Lütfen %(box_name)s kutusunun kurulumu bitirmesini bekleyin. Kurulum sona " "erdiğinde %(box_name)s kutusunu kullanabileceksiniz." +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "Kurulum" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6526,19 +6662,15 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "Kurulum" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "Bu uygulama kurulsun mu?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "Bu uygulamanın güncellemeye ihtiyacı var. Şimdi güncellensin mi?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." @@ -6546,28 +6678,28 @@ msgstr "" "Başka bir kurulum ya da güncelleme zaten çalışmaktadır. Lütfen tekrar " "denemeden önce biraz bekleyin." -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "Kur" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "Kurulum öncesi işlemleri yapılıyor" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "Kurulum sonrası işlemleri yapılıyor" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "%(package_names)s kuruluyor: %(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "%(percentage)s%% tamamlandı" @@ -6580,18 +6712,27 @@ msgstr "Ağ istemcisini başlat" msgid "Client Apps" msgstr "İstemci Uygulamalar" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "Uygulama etkinleştirildi" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "Uygulama devre dışı bırakıldı" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "İndirmelerin kaydedilecekleri klasör. Varsayılan klasörü değiştirirseniz, " +#~ "yeni klasörün var olduğundan ve \"debian-transmission\" kullanıcısı " +#~ "tarafından yazılabilir olduğundan emin olun." + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN sunucusu çalışmaktadır" @@ -7547,9 +7688,6 @@ msgstr "" #~ msgid "Generated PGP key." #~ msgstr "Oluşturulan PGP anahtarı." -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Mumble Ses ile Sohbet Sunucusu" - #~ msgid "Enable Mumble daemon" #~ msgstr "Mumble servisini etkinleştir" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 6d14cbfdb..a7e8aef17 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-01-04 17:06+0000\n" "Last-Translator: prolinux ukraine \n" "Language-Team: Ukrainian any user on {box_name} " "belonging to the admin group." msgstr "" +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +msgid "Access" +msgstr "" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "Загальні налаштування" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -673,13 +693,13 @@ msgstr "Загальні налаштування" msgid "Configure" msgstr "Налаштувати" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "Доменне ім’я" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "" @@ -704,11 +724,11 @@ msgid "" "length must be 63 characters or less." msgstr "" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -719,11 +739,11 @@ msgid "" "or less." msgstr "" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -733,53 +753,53 @@ msgid "" "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "Помилка параметру hostname: {exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error setting webserver home page: {exception}" msgstr "Помилка параметру hostname: {exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, fuzzy, python-brace-format #| msgid "Error setting hostname: {exception}" msgid "Error changing advanced mode: {exception}" msgstr "Помилка параметру hostname: {exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "" @@ -787,7 +807,7 @@ msgstr "" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "" @@ -887,23 +907,23 @@ msgstr "" msgid "Deluge" msgstr "Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge це BitTorrent клієнт з веб-інтерфейсом." -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -921,7 +941,7 @@ msgid "" "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "" @@ -1009,18 +1029,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "Оновити налаштування" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "" @@ -1061,46 +1081,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "Доменне ім’я" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1109,68 +1129,68 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "Приймати всі SSL-сертифікати" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "Ім’я користувача" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "Пароль" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "Показати пароль" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "" @@ -1229,7 +1249,7 @@ msgstr "" msgid "About" msgstr "" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1237,15 +1257,15 @@ msgstr "" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "Статус" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "" @@ -1253,18 +1273,18 @@ msgstr "" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 msgid "Chat Server" msgstr "" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 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:58 +#: plinth/modules/ejabberd/__init__.py:60 #, python-brace-format msgid "" "To actually communicate, you can use the web clientGit tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1505,7 +1525,7 @@ msgstr "" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository not found" msgid "Repository's owner name" @@ -1588,39 +1608,39 @@ msgstr "Остаточно видалити цей архів?" msgid "Delete %(name)s" msgstr "" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository not found" msgid "Repository created." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 msgid "An error occurred while creating the repository." msgstr "" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository not found" msgid "Repository edited." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Remove Repository" msgid "Edit repository" msgstr "Видалити сховище" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "" @@ -1629,8 +1649,8 @@ msgstr "" msgid "Documentation" msgstr "" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "" @@ -1769,7 +1789,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "" @@ -1883,11 +1903,11 @@ msgstr "" msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -1895,25 +1915,25 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 msgid "" "Find more information about I2P on their project homepage." msgstr "" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Влючити застосунок" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 msgid "I2P Proxy" msgstr "" @@ -1926,7 +1946,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -1962,18 +1982,18 @@ msgstr "" msgid "ikiwiki" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 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:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -1982,22 +2002,22 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 msgid "View and edit wiki applications" msgstr "" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "" @@ -2036,33 +2056,33 @@ msgid "" "history. Delete this wiki or blog permanently?" msgstr "" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "Archive deleted." msgid "{title} deleted." msgstr "Архів видалено." -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, python-brace-format msgid "Could not delete {title}: {error}" msgstr "" @@ -2071,15 +2091,15 @@ msgstr "" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2106,11 +2126,11 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 msgid "Chat Client" msgstr "" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2215,36 +2235,36 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, python-brace-format msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" msgstr "" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" @@ -2253,7 +2273,7 @@ msgstr "" msgid "Matrix Synapse" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2263,7 +2283,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2300,7 +2320,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2332,11 +2352,11 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 msgid "Public registration disabled" msgstr "" @@ -2345,11 +2365,11 @@ msgstr "" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2357,7 +2377,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2366,7 +2386,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2402,23 +2422,23 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 msgid "Password updated" msgstr "" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 msgid "Public registrations enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 msgid "Public registrations disabled" msgstr "" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 msgid "Private mode enabled" msgstr "" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 msgid "Private mode disabled" msgstr "" @@ -2427,11 +2447,11 @@ msgstr "" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 msgid "Block Sandbox" msgstr "" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2477,7 +2497,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "" @@ -2486,52 +2506,107 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "" +#: plinth/modules/minidlna/__init__.py:43 +msgid "Simple Media Server" +msgstr "" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 msgid "MLDonkey" msgstr "" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 msgid "Peer-to-peer File Sharing" msgstr "" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2693,27 +2768,39 @@ msgstr "" msgid "Error occurred while publishing key." msgstr "" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 msgid "Voice Chat" msgstr "" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 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/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "пароль SSH серверу" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -2722,6 +2809,10 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +msgid "SuperUser password successfully updated." +msgstr "" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "" @@ -2768,43 +2859,43 @@ msgstr "" msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2812,176 +2903,176 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "" @@ -3188,7 +3279,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "" @@ -3204,6 +3295,7 @@ msgstr "" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "" @@ -3216,7 +3308,7 @@ msgid "This connection is not active." msgstr "" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "" @@ -3269,13 +3361,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "" @@ -3320,11 +3412,11 @@ msgstr "" msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3335,13 +3427,13 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "" @@ -3469,7 +3561,7 @@ msgid "" "pagekite.net server." msgstr "" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "" @@ -3710,18 +3802,18 @@ msgstr "" msgid "Privoxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 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:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -3731,7 +3823,7 @@ msgid "" "\">http://p.p." msgstr "" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -3740,11 +3832,11 @@ msgstr "" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 msgid "IRC Client" msgstr "" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -3755,7 +3847,7 @@ msgid "" "connect and disconnect from it." msgstr "" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your /roundcube. Provide the username and password of the email account " @@ -3964,7 +4056,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -3978,13 +4070,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -3992,7 +4084,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4043,21 +4135,21 @@ msgstr "" msgid "Action" msgstr "Шифрування" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Помилка при встановлені застосунку: {error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4067,23 +4159,23 @@ msgstr "Помилка при встановлені застосунку: {erro msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 msgid "Web Search" msgstr "" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4115,27 +4207,27 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4148,7 +4240,7 @@ msgid "Show security report" msgstr "" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 msgid "Security Report" msgstr "" @@ -4179,12 +4271,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "" @@ -4212,18 +4304,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4232,7 +4324,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4243,23 +4335,23 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 msgid "Server" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 msgid "Server port number" msgstr "" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4318,48 +4410,48 @@ msgstr "" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 msgid "Add share" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 msgid "Shared Over" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 msgid "With Groups" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 msgid "Share added." msgstr "" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 msgid "Add Share" msgstr "" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 msgid "Share edited." msgstr "" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 msgid "Edit Share" msgstr "" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 msgid "Share deleted." msgstr "" @@ -4417,43 +4509,43 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 msgid "Hourly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 msgid "Daily Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 msgid "Weekly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 msgid "Yearly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -4529,11 +4621,11 @@ msgstr "" msgid "Created snapshot." msgstr "" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 msgid "Storage snapshots configuration updated" msgstr "" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "" @@ -4632,83 +4724,121 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:237 +#: plinth/modules/storage/__init__.py:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:243 +#: plinth/modules/storage/__init__.py:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Repository not found" +msgid "Invalid directory name." +msgstr "Сховище не знайдено" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +msgid "Path is not a directory." +msgstr "" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +msgid "Directory" +msgstr "" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +msgid "Samba share" +msgstr "" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 msgid "The following storage devices are in use:" msgstr "" @@ -4774,11 +4904,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -4786,7 +4916,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -4797,7 +4927,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 msgid "Administer Syncthing application" msgstr "" @@ -4805,11 +4935,11 @@ msgstr "" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -4817,7 +4947,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -4873,76 +5003,76 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -4950,41 +5080,41 @@ msgid "" "download bandwidth." msgstr "" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -#: plinth/modules/tor/forms.py:128 -msgid "Enable Tor Onion Service" +#: plinth/modules/tor/forms.py:118 +msgid "Enable Tor Hidden Service" msgstr "" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, python-brace-format msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5033,53 +5163,46 @@ msgstr "" msgid "Transmission" msgstr "" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 msgid "News Feed Reader" msgstr "" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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:52 +#: plinth/modules/ttrss/__init__.py:54 #, 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:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5087,7 +5210,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "" @@ -5153,18 +5276,18 @@ msgstr "" msgid "Starting upgrade failed." msgstr "" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5172,7 +5295,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5181,15 +5304,15 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 msgid "Permissions" msgstr "" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5198,59 +5321,59 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "" @@ -5266,12 +5389,12 @@ msgstr "" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "" @@ -5301,7 +5424,7 @@ msgid "Create Account" msgstr "" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "" @@ -5327,62 +5450,62 @@ msgstr "" msgid "Save Changes" msgstr "" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -5425,12 +5548,12 @@ msgid "" "href=\"%(status_log_url)s\">status log to the bug report." msgstr "" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, python-format msgid "Service %(service_name)s is running." msgstr "" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, python-format msgid "Service %(service_name)s is not running." msgstr "" @@ -5540,6 +5663,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -5619,46 +5746,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "" @@ -5671,15 +5794,15 @@ msgstr "" msgid "Client Apps" msgstr "" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "" diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 115c2d2f7..048ce7cb3 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: 2019-12-02 17:30-0500\n" +"POT-Creation-Date: 2019-12-16 17:58-0500\n" "PO-Revision-Date: 2019-09-13 05:23+0000\n" "Last-Translator: Anxin YI <2732146152@qq.com>\n" "Language-Team: Chinese (Simplified) /" @@ -666,11 +666,33 @@ msgstr "" "径访问。它将能被该 {box_name} 上任何属于 admin 组的用" "户访问。" +#: plinth/modules/cockpit/__init__.py:63 +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/templates/cockpit.html:26 +#, fuzzy +#| msgid "Access Point" +msgid "Access" +msgstr "访问点" + +#: plinth/modules/cockpit/templates/cockpit.html:29 +msgid "Cockpit will only work when accessed using the following URLs." +msgstr "" + #: plinth/modules/config/__init__.py:37 msgid "General Configuration" msgstr "常规配置" -#: plinth/modules/config/__init__.py:62 plinth/modules/dynamicdns/views.py:45 +#: plinth/modules/config/__init__.py:40 +msgid "" +"Here you can set some general configuration options like hostname, domain " +"name, webserver home page etc." +msgstr "" + +#: plinth/modules/config/__init__.py:67 plinth/modules/dynamicdns/views.py:44 #: plinth/modules/i2p/views.py:31 plinth/modules/names/templates/names.html:44 #: plinth/modules/names/templates/names.html:58 #: plinth/modules/snapshot/views.py:41 @@ -678,13 +700,13 @@ msgstr "常规配置" msgid "Configure" msgstr "配置" -#: plinth/modules/config/__init__.py:66 plinth/modules/config/forms.py:77 -#: plinth/modules/dynamicdns/forms.py:111 +#: plinth/modules/config/__init__.py:71 plinth/modules/config/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:110 msgid "Domain Name" msgstr "域名" -#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:90 -#: plinth/modules/dynamicdns/forms.py:114 +#: plinth/modules/config/forms.py:42 plinth/modules/config/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:113 msgid "Invalid domain name" msgstr "无效的域名" @@ -712,11 +734,11 @@ msgstr "" "数字结束和开始作为内部字符只有字母、数字和连字符。总长度必须为 63 个字符或更" "少。" -#: plinth/modules/config/forms.py:73 +#: plinth/modules/config/forms.py:72 msgid "Invalid hostname" msgstr "无效的主机名" -#: plinth/modules/config/forms.py:79 +#: plinth/modules/config/forms.py:78 #, python-brace-format msgid "" "Domain name is the global name by which other devices on the Internet can " @@ -731,11 +753,11 @@ msgstr "" "为内部字符。每个标签的长度必须为 63 个字符或更少。域名总长度不得超过 253 个字" "符。" -#: plinth/modules/config/forms.py:94 +#: plinth/modules/config/forms.py:93 msgid "Webserver Home Page" msgstr "Web 服务器首页" -#: plinth/modules/config/forms.py:96 +#: plinth/modules/config/forms.py:95 #, python-brace-format msgid "" "Choose the default page that must be served when someone visits your " @@ -749,51 +771,51 @@ msgstr "" "{box_name} 服务(Plinth)之外的其它地方,您的用户必须明确输入 /plinth 或 /" "freedombox 来访问 {box_name} 服务(Plinth)。" -#: plinth/modules/config/forms.py:107 +#: plinth/modules/config/forms.py:106 msgid "Show advanced apps and features" msgstr "展示先进的应用和特点" -#: plinth/modules/config/forms.py:108 +#: plinth/modules/config/forms.py:107 msgid "Show apps and features that require more technical knowledge." msgstr "展示需要更多专业知识的应用和特点。" -#: plinth/modules/config/views.py:64 +#: plinth/modules/config/views.py:65 #, python-brace-format msgid "Error setting hostname: {exception}" msgstr "设置主机名错误:{exception}" -#: plinth/modules/config/views.py:67 +#: plinth/modules/config/views.py:68 msgid "Hostname set" msgstr "主机名设置" -#: plinth/modules/config/views.py:76 +#: plinth/modules/config/views.py:77 #, python-brace-format msgid "Error setting domain name: {exception}" msgstr "设置域名错误:{exception}" -#: plinth/modules/config/views.py:79 +#: plinth/modules/config/views.py:80 msgid "Domain name set" msgstr "域名集" -#: plinth/modules/config/views.py:87 +#: plinth/modules/config/views.py:88 #, python-brace-format msgid "Error setting webserver home page: {exception}" msgstr "设置主机名错误:{exception}" -#: plinth/modules/config/views.py:90 +#: plinth/modules/config/views.py:91 msgid "Webserver home page set" msgstr "网页服务器主页已设置" -#: plinth/modules/config/views.py:98 +#: plinth/modules/config/views.py:99 #, python-brace-format msgid "Error changing advanced mode: {exception}" msgstr "更改为高级模式时错误:{exception}" -#: plinth/modules/config/views.py:103 +#: plinth/modules/config/views.py:104 msgid "Showing advanced apps and features" msgstr "展现先进的应用和特征" -#: plinth/modules/config/views.py:106 +#: plinth/modules/config/views.py:107 msgid "Hiding advanced apps and features" msgstr "隐藏先进的应用和特征" @@ -801,7 +823,7 @@ msgstr "隐藏先进的应用和特征" msgid "Coquelicot" msgstr "Coquelicot" -#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:45 +#: plinth/modules/coquelicot/__init__.py:42 plinth/modules/samba/__init__.py:47 msgid "File Sharing" msgstr "文件分享" @@ -906,18 +928,18 @@ msgstr "时区设置" msgid "Deluge" msgstr "启用 Deluge" -#: plinth/modules/deluge/__init__.py:41 -#: plinth/modules/transmission/__init__.py:43 +#: plinth/modules/deluge/__init__.py:43 +#: plinth/modules/transmission/__init__.py:45 msgid "BitTorrent Web Client" msgstr "" "BitTorrent 网页客户端\n" "(Deluge)" -#: plinth/modules/deluge/__init__.py:44 +#: plinth/modules/deluge/__init__.py:46 msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge 是一个有网页界面的 BitTorrent 客户端。" -#: plinth/modules/deluge/__init__.py:45 +#: plinth/modules/deluge/__init__.py:47 #, fuzzy #| msgid "" #| "When enabled, the Deluge web client will be available from /deluge 路径访问网页" "服务器。默认密码是“deluge”,但是你需要在启用此服务以后立刻登录并修改它。" -#: plinth/modules/deluge/__init__.py:49 -#: plinth/modules/transmission/__init__.py:55 +#: plinth/modules/deluge/__init__.py:51 +#: plinth/modules/transmission/__init__.py:57 msgid "Download files using BitTorrent applications" msgstr "" @@ -951,7 +973,7 @@ msgid "" msgstr "" "系统诊断将运行测试程序检查您的系统以确认应用程序和服务正在按预期方式运行。" -#: plinth/modules/diagnostics/diagnostics.py:70 +#: plinth/modules/diagnostics/diagnostics.py:69 msgid "Diagnostic Test" msgstr "诊断测试" @@ -1039,18 +1061,18 @@ msgstr "" #: plinth/modules/ejabberd/templates/ejabberd.html:58 #: plinth/modules/i2p/templates/i2p.html:34 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:33 -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:63 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:62 #: plinth/modules/snapshot/templates/snapshot.html:30 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:51 #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:58 -#: plinth/templates/app.html:105 +#: plinth/templates/app.html:77 msgid "Update setup" msgstr "更新安装程序" -#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:66 -#: plinth/modules/matrixsynapse/views.py:105 -#: plinth/modules/mediawiki/views.py:75 plinth/modules/openvpn/views.py:154 -#: plinth/modules/tor/views.py:155 plinth/views.py:176 +#: plinth/modules/diaspora/views.py:94 plinth/modules/ejabberd/views.py:67 +#: plinth/modules/matrixsynapse/views.py:109 +#: plinth/modules/mediawiki/views.py:76 plinth/modules/openvpn/views.py:154 +#: plinth/modules/tor/views.py:155 plinth/views.py:177 msgid "Setting unchanged" msgstr "设置未改变" @@ -1102,7 +1124,7 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "域名" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:42 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1111,7 +1133,7 @@ msgstr "" "变量 < 用户 > < 传递 > < Ip > < 域 > 可能在 URL 内使" "用。详细信息请参见更新 URL 模板的示例提供程序。" -#: plinth/modules/dynamicdns/forms.py:47 +#: plinth/modules/dynamicdns/forms.py:46 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1120,7 +1142,7 @@ msgstr "" "请选择您的提供商更新协议。如果您的提供商不支持 GnuDIP 协议或未列出您的提供商" "可能会使用您的提供商的更新 URL。" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:51 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1128,26 +1150,26 @@ msgstr "" "请不要在此输入 URL(如\"https://example.com/\"),只输入 GnuDIP 服务器的主机" "名(例如“example.com”)。" -#: plinth/modules/dynamicdns/forms.py:56 +#: plinth/modules/dynamicdns/forms.py:55 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "你访问你的 {box_name} 时想使用的公开域名。" -#: plinth/modules/dynamicdns/forms.py:59 +#: plinth/modules/dynamicdns/forms.py:58 msgid "Use this option if your provider uses self signed certificates." msgstr "如果您的提供商使用自签名的证书,请使用此选项。" -#: plinth/modules/dynamicdns/forms.py:62 +#: plinth/modules/dynamicdns/forms.py:61 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "如果选择了此选项,您的用户名和密码将用于 HTTP 基本身份验证。" -#: plinth/modules/dynamicdns/forms.py:65 +#: plinth/modules/dynamicdns/forms.py:64 msgid "Leave this field empty if you want to keep your current password." msgstr "如果你想保持你的当前密码,请将此字段留空。" -#: plinth/modules/dynamicdns/forms.py:68 +#: plinth/modules/dynamicdns/forms.py:67 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1159,68 +1181,68 @@ msgstr "" "此 URL 用于确定真实的IP地址。URL应该简单地返回客户端来自的 IP (例如:http://" "myip.datasystems24.de)。" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:75 msgid "The username that was used when the account was created." msgstr "账户创建时使用的用户名" -#: plinth/modules/dynamicdns/forms.py:85 +#: plinth/modules/dynamicdns/forms.py:83 msgid "Enable Dynamic DNS" msgstr "启用动态 DNS" -#: plinth/modules/dynamicdns/forms.py:88 +#: plinth/modules/dynamicdns/forms.py:86 msgid "Service Type" msgstr "服务类型" -#: plinth/modules/dynamicdns/forms.py:92 +#: plinth/modules/dynamicdns/forms.py:91 msgid "GnuDIP Server Address" msgstr "GnuDIP 服务器地址" -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:94 msgid "Invalid server name" msgstr "服务器名称无效" -#: plinth/modules/dynamicdns/forms.py:99 +#: plinth/modules/dynamicdns/forms.py:97 msgid "Update URL" msgstr "更新 URL" -#: plinth/modules/dynamicdns/forms.py:103 +#: plinth/modules/dynamicdns/forms.py:102 msgid "Accept all SSL certificates" msgstr "接受所有 SSL 证书" -#: plinth/modules/dynamicdns/forms.py:107 +#: plinth/modules/dynamicdns/forms.py:106 msgid "Use HTTP basic authentication" msgstr "使用 HTTP 基本身份验证" -#: plinth/modules/dynamicdns/forms.py:118 plinth/modules/networks/forms.py:234 +#: plinth/modules/dynamicdns/forms.py:116 plinth/modules/networks/forms.py:212 msgid "Username" msgstr "用户名" -#: plinth/modules/dynamicdns/forms.py:121 plinth/modules/networks/forms.py:235 -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/dynamicdns/forms.py:119 plinth/modules/networks/forms.py:213 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password" msgstr "密码" -#: plinth/modules/dynamicdns/forms.py:125 plinth/modules/networks/forms.py:237 +#: plinth/modules/dynamicdns/forms.py:123 plinth/modules/networks/forms.py:215 msgid "Show password" msgstr "显示密码" -#: plinth/modules/dynamicdns/forms.py:128 +#: plinth/modules/dynamicdns/forms.py:127 msgid "URL to look up public IP" msgstr "查寻公开 IP 的 URL" -#: plinth/modules/dynamicdns/forms.py:152 +#: plinth/modules/dynamicdns/forms.py:151 msgid "Please provide an update URL or a GnuDIP server address" msgstr "请提供一个更新 URL 或者 GnuDIP 服务器地址" -#: plinth/modules/dynamicdns/forms.py:157 +#: plinth/modules/dynamicdns/forms.py:156 msgid "Please provide a GnuDIP username" msgstr "请提供一个 GnuDIP 用户名" -#: plinth/modules/dynamicdns/forms.py:161 +#: plinth/modules/dynamicdns/forms.py:160 msgid "Please provide a GnuDIP domain name" msgstr "请提供一个 GnuDIP 域名" -#: plinth/modules/dynamicdns/forms.py:166 +#: plinth/modules/dynamicdns/forms.py:165 msgid "Please provide a password" msgstr "请提供一个密码" @@ -1290,7 +1312,7 @@ msgstr "最后一次更新" msgid "About" msgstr "关于" -#: plinth/modules/dynamicdns/views.py:49 +#: plinth/modules/dynamicdns/views.py:47 #: plinth/modules/firewall/templates/firewall.html:25 #: plinth/modules/firewall/templates/firewall.html:45 #: plinth/modules/letsencrypt/templates/letsencrypt.html:38 @@ -1298,15 +1320,15 @@ msgstr "关于" #: plinth/modules/openvpn/templates/openvpn.html:39 #: plinth/modules/openvpn/templates/openvpn.html:60 #: plinth/modules/tor/templates/tor.html:37 -#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:70 +#: plinth/modules/tor/templates/tor.html:51 plinth/templates/app.html:42 msgid "Status" msgstr "状态" -#: plinth/modules/dynamicdns/views.py:81 +#: plinth/modules/dynamicdns/views.py:79 msgid "Configure Dynamic DNS" msgstr "配置动态 DNS" -#: plinth/modules/dynamicdns/views.py:107 +#: plinth/modules/dynamicdns/views.py:105 msgid "Dynamic DNS Status" msgstr "动态 DNS 状态" @@ -1314,14 +1336,14 @@ msgstr "动态 DNS 状态" msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:52 -#: plinth/modules/matrixsynapse/__init__.py:49 +#: plinth/modules/ejabberd/__init__.py:54 +#: plinth/modules/matrixsynapse/__init__.py:51 #, fuzzy #| msgid "Web Server" msgid "Chat Server" msgstr "Web 服务器" -#: plinth/modules/ejabberd/__init__.py:55 +#: plinth/modules/ejabberd/__init__.py:57 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." @@ -1329,7 +1351,7 @@ msgstr "" "XMPP 是一种开放标准的通信协议。在这里你可以运行并配置您的 XMPP 服务器,称为 " "ejabberd。" -#: plinth/modules/ejabberd/__init__.py:58 +#: plinth/modules/ejabberd/__init__.py:60 #, fuzzy, python-brace-format #| msgid "" #| "To actually communicate, you can use the web client or any other Git tutorial." msgstr "" -#: plinth/modules/gitweb/__init__.py:59 +#: plinth/modules/gitweb/__init__.py:61 msgid "Read-write access to Git repositories" msgstr "" @@ -1597,7 +1619,7 @@ msgstr "创建新存储库" msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:87 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" @@ -1686,41 +1708,41 @@ msgstr "永久删除此快照?" msgid "Delete %(name)s" msgstr "删除 %(name)s" -#: plinth/modules/gitweb/views.py:64 +#: plinth/modules/gitweb/views.py:65 #, fuzzy #| msgid "Repository removed." msgid "Repository created." msgstr "储存库被移除。" -#: plinth/modules/gitweb/views.py:86 +#: plinth/modules/gitweb/views.py:87 #, fuzzy #| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." msgstr "在配置过程中出错。" -#: plinth/modules/gitweb/views.py:99 +#: plinth/modules/gitweb/views.py:100 #, fuzzy #| msgid "Repository removed." msgid "Repository edited." msgstr "储存库被移除。" -#: plinth/modules/gitweb/views.py:104 +#: plinth/modules/gitweb/views.py:105 #, fuzzy #| msgid "Create User" msgid "Edit repository" msgstr "创建用户" -#: plinth/modules/gitweb/views.py:132 plinth/modules/searx/views.py:62 -#: plinth/modules/searx/views.py:73 plinth/modules/tor/views.py:177 +#: plinth/modules/gitweb/views.py:133 plinth/modules/searx/views.py:63 +#: plinth/modules/searx/views.py:74 plinth/modules/tor/views.py:177 msgid "An error occurred during configuration." msgstr "在配置过程中出错。" -#: plinth/modules/gitweb/views.py:153 +#: plinth/modules/gitweb/views.py:154 #, python-brace-format msgid "{name} deleted." msgstr "{name} 已删除。" -#: plinth/modules/gitweb/views.py:157 +#: plinth/modules/gitweb/views.py:158 #, python-brace-format msgid "Could not delete {name}: {error}" msgstr "不能删除 {name}:{error}" @@ -1729,8 +1751,8 @@ msgstr "不能删除 {name}:{error}" msgid "Documentation" msgstr "文档" -#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:68 -#: plinth/modules/networks/forms.py:108 plinth/templates/help-menu.html:35 +#: plinth/modules/help/help.py:54 plinth/modules/networks/forms.py:63 +#: plinth/modules/networks/forms.py:94 plinth/templates/help-menu.html:35 #: plinth/templates/help-menu.html:36 plinth/templates/index.html:135 msgid "Manual" msgstr "手册" @@ -1887,7 +1909,7 @@ msgstr "" #: plinth/modules/help/templates/help_contribute.html:57 #: plinth/modules/power/templates/power_restart.html:42 #: plinth/modules/power/templates/power_shutdown.html:41 -#: plinth/templates/app.html:55 plinth/templates/setup.html:48 +#: plinth/templates/header.html:59 msgid "Learn more..." msgstr "了解更多……" @@ -2022,13 +2044,13 @@ msgstr "提交日志报告前,请从日志中删除任何密码和其他个人 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:44 plinth/modules/tor/__init__.py:48 +#: plinth/modules/i2p/__init__.py:46 plinth/modules/tor/__init__.py:48 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "Tor 匿名网络" -#: plinth/modules/i2p/__init__.py:47 +#: plinth/modules/i2p/__init__.py:49 msgid "" "The Invisible Internet Project is an anonymous network layer intended to " "protect communication from censorship and surveillance. I2P provides " @@ -2036,7 +2058,7 @@ msgid "" "distributed around the world." msgstr "" -#: plinth/modules/i2p/__init__.py:51 +#: plinth/modules/i2p/__init__.py:53 #, fuzzy #| msgid "" #| "For more information about the %(box_name)s project, see the %(box_name)s Wiki。" -#: plinth/modules/i2p/__init__.py:53 +#: plinth/modules/i2p/__init__.py:55 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:59 +#: plinth/modules/i2p/__init__.py:61 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "启用应用程序" -#: plinth/modules/i2p/__init__.py:100 +#: plinth/modules/i2p/__init__.py:103 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -2075,7 +2097,7 @@ msgstr "" msgid "Proxies" msgstr "" -#: plinth/modules/i2p/views.py:38 +#: plinth/modules/i2p/views.py:37 msgid "Anonymous torrents" msgstr "" @@ -2113,11 +2135,11 @@ msgstr "" msgid "ikiwiki" msgstr "维基" -#: plinth/modules/ikiwiki/__init__.py:43 +#: plinth/modules/ikiwiki/__init__.py:45 msgid "Wiki and Blog" msgstr "Wiki 和博客" -#: plinth/modules/ikiwiki/__init__.py:46 +#: plinth/modules/ikiwiki/__init__.py:48 #, fuzzy #| msgid "" #| "ikiwiki is a simple wiki and blog application. It supports several " @@ -2133,7 +2155,7 @@ msgstr "" "Markdown 和常见的博客功能,如评论和 RSS 源。启用后,博客和 Wiki 将可从 /ikiwiki 访问。" -#: plinth/modules/ikiwiki/__init__.py:50 +#: plinth/modules/ikiwiki/__init__.py:52 #, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " @@ -2142,24 +2164,24 @@ msgid "" "Configuration you can change these permissions or add new users." msgstr "" -#: plinth/modules/ikiwiki/__init__.py:60 +#: plinth/modules/ikiwiki/__init__.py:62 #, fuzzy #| msgid "Services and Applications" msgid "View and edit wiki applications" msgstr "服务和应用程序" -#: plinth/modules/ikiwiki/forms.py:29 +#: plinth/modules/ikiwiki/forms.py:27 #: plinth/modules/networks/templates/connection_show.html:98 #: plinth/modules/samba/templates/samba.html:52 #: plinth/modules/storage/templates/storage.html:43 msgid "Type" msgstr "类型" -#: plinth/modules/ikiwiki/forms.py:34 +#: plinth/modules/ikiwiki/forms.py:32 msgid "Admin Account Name" msgstr "管理员帐户名称" -#: plinth/modules/ikiwiki/forms.py:37 +#: plinth/modules/ikiwiki/forms.py:34 msgid "Admin Account Password" msgstr "管理员帐户密码" @@ -2199,33 +2221,33 @@ msgid "" msgstr "" "此操作将删除所有文章、 网页和评论包括修订历史记录。 永久删除此 wiki 或博客吗?" -#: plinth/modules/ikiwiki/views.py:96 +#: plinth/modules/ikiwiki/views.py:97 #, python-brace-format msgid "Created wiki {name}." msgstr "创建 wiki {name}。" -#: plinth/modules/ikiwiki/views.py:99 +#: plinth/modules/ikiwiki/views.py:100 #, python-brace-format msgid "Could not create wiki: {error}" msgstr "不能创建 wiki:{error}" -#: plinth/modules/ikiwiki/views.py:109 +#: plinth/modules/ikiwiki/views.py:110 #, python-brace-format msgid "Created blog {name}." msgstr "已创建的博客 {name}。" -#: plinth/modules/ikiwiki/views.py:112 +#: plinth/modules/ikiwiki/views.py:113 #, python-brace-format msgid "Could not create blog: {error}" msgstr "不能创建博客:{error}" -#: plinth/modules/ikiwiki/views.py:127 +#: plinth/modules/ikiwiki/views.py:128 #, fuzzy, python-brace-format #| msgid "{name} deleted." msgid "{title} deleted." msgstr "{name} 已删除。" -#: plinth/modules/ikiwiki/views.py:131 +#: plinth/modules/ikiwiki/views.py:132 #, fuzzy, python-brace-format #| msgid "Could not delete {name}: {error}" msgid "Could not delete {title}: {error}" @@ -2235,17 +2257,17 @@ msgstr "不能删除 {name}:{error}" msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:44 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" msgstr "Web 服务器" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:49 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "infinoted 是一个 Gobby 服务器,Gobby 是一个协作化的文本编辑器。" -#: plinth/modules/infinoted/__init__.py:49 +#: plinth/modules/infinoted/__init__.py:51 #, python-brace-format msgid "" "To use it, download Gobby, desktop " @@ -2282,7 +2304,7 @@ msgstr "" msgid "JSXC" msgstr "" -#: plinth/modules/jsxc/__init__.py:38 +#: plinth/modules/jsxc/__init__.py:40 #, fuzzy #| msgid "" #| "Chat Client \n" @@ -2292,7 +2314,7 @@ msgstr "" "聊天客户端\n" "(JSXC)" -#: plinth/modules/jsxc/__init__.py:41 +#: plinth/modules/jsxc/__init__.py:43 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." @@ -2416,7 +2438,7 @@ msgid "" "domains to be able to obtain certificates for them." msgstr "没有配置域名。配置域名可以为它们获得相应的证书。" -#: plinth/modules/letsencrypt/views.py:58 +#: plinth/modules/letsencrypt/views.py:57 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "" @@ -2424,30 +2446,30 @@ msgid "" "moments to take effect." msgstr "成功为域名 {domain} 吊销证书" -#: plinth/modules/letsencrypt/views.py:64 +#: plinth/modules/letsencrypt/views.py:63 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" msgstr "无法为 {domain} 撤销证书:{error}" -#: plinth/modules/letsencrypt/views.py:77 -#: plinth/modules/letsencrypt/views.py:94 +#: plinth/modules/letsencrypt/views.py:76 +#: plinth/modules/letsencrypt/views.py:93 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" msgstr "为域名 {domain} 成功获得证书" -#: plinth/modules/letsencrypt/views.py:82 -#: plinth/modules/letsencrypt/views.py:99 +#: plinth/modules/letsencrypt/views.py:81 +#: plinth/modules/letsencrypt/views.py:98 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" msgstr "未能为域名 {domain} 获取证书:{error}" -#: plinth/modules/letsencrypt/views.py:111 +#: plinth/modules/letsencrypt/views.py:110 #, fuzzy, python-brace-format #| msgid "Certificate successfully revoked for domain {domain}" msgid "Certificate successfully deleted for domain {domain}" msgstr "成功为域名 {domain} 吊销证书" -#: plinth/modules/letsencrypt/views.py:116 +#: plinth/modules/letsencrypt/views.py:115 #, fuzzy, python-brace-format #| msgid "Failed to revoke certificate for domain {domain}: {error}" msgid "Failed to delete certificate for domain {domain}: {error}" @@ -2463,7 +2485,7 @@ msgstr "" "聊天服务器\n" "(Matrix Synapse)" -#: plinth/modules/matrixsynapse/__init__.py:52 +#: plinth/modules/matrixsynapse/__init__.py:54 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2473,7 +2495,7 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:59 +#: plinth/modules/matrixsynapse/__init__.py:61 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. @username:domainname." msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:42 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:41 msgid "" "\n" " Warning! Changing the domain name after the initial\n" @@ -2512,7 +2534,7 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:51 +#: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:50 #, python-format msgid "" "No domain(s) are available. Configure at " @@ -2551,13 +2573,13 @@ msgid "" " " msgstr "" -#: plinth/modules/matrixsynapse/views.py:118 +#: plinth/modules/matrixsynapse/views.py:122 #, fuzzy #| msgid "Application enabled" msgid "Public registration enabled" msgstr "应用程序已启用" -#: plinth/modules/matrixsynapse/views.py:123 +#: plinth/modules/matrixsynapse/views.py:127 #, fuzzy #| msgid "Application disabled" msgid "Public registration disabled" @@ -2568,11 +2590,11 @@ msgstr "应用程序已禁用" msgid "MediaWiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:40 plinth/templates/index.html:139 +#: plinth/modules/mediawiki/__init__.py:42 plinth/templates/index.html:139 msgid "Wiki" msgstr "" -#: plinth/modules/mediawiki/__init__.py:43 +#: plinth/modules/mediawiki/__init__.py:45 msgid "" "MediaWiki is the wiki engine that powers Wikipedia and other WikiMedia " "projects. A wiki engine is a program for creating a collaboratively edited " @@ -2580,7 +2602,7 @@ msgid "" "collaborate with friends on projects." msgstr "" -#: plinth/modules/mediawiki/__init__.py:47 +#: plinth/modules/mediawiki/__init__.py:49 msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2589,7 +2611,7 @@ msgid "" "CreateAccount\">Special:CreateAccount page." msgstr "" -#: plinth/modules/mediawiki/__init__.py:53 +#: plinth/modules/mediawiki/__init__.py:55 msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." @@ -2631,31 +2653,31 @@ msgid "" "read/write to the wiki. Public registrations will also be disabled." msgstr "" -#: plinth/modules/mediawiki/views.py:71 +#: plinth/modules/mediawiki/views.py:72 #, fuzzy #| msgid "Password" msgid "Password updated" msgstr "密码" -#: plinth/modules/mediawiki/views.py:89 +#: plinth/modules/mediawiki/views.py:90 #, fuzzy #| msgid "Application enabled" msgid "Public registrations enabled" msgstr "应用程序已启用" -#: plinth/modules/mediawiki/views.py:98 +#: plinth/modules/mediawiki/views.py:99 #, fuzzy #| msgid "Application disabled" msgid "Public registrations disabled" msgstr "应用程序已禁用" -#: plinth/modules/mediawiki/views.py:107 +#: plinth/modules/mediawiki/views.py:108 #, fuzzy #| msgid "PageKite enabled" msgid "Private mode enabled" msgstr "PageKite 已启用" -#: plinth/modules/mediawiki/views.py:110 +#: plinth/modules/mediawiki/views.py:111 #, fuzzy #| msgid "PageKite disabled" msgid "Private mode disabled" @@ -2666,7 +2688,7 @@ msgstr "PageKite 已禁用" msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:53 +#: plinth/modules/minetest/__init__.py:55 #, fuzzy #| msgid "" #| "Block Sandbox \n" @@ -2676,7 +2698,7 @@ msgstr "" "方块沙盒\n" "(Minetest)" -#: plinth/modules/minetest/__init__.py:57 +#: plinth/modules/minetest/__init__.py:59 #, python-brace-format msgid "" "Minetest is a multiplayer infinite-world block sandbox. This module enables " @@ -2742,7 +2764,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "禁用时,玩家间不能互相伤害也不能死" #: plinth/modules/minetest/templates/minetest.html:33 -#: plinth/modules/networks/forms.py:71 plinth/modules/networks/forms.py:111 +#: plinth/modules/networks/forms.py:65 plinth/modules/networks/forms.py:96 msgid "Address" msgstr "地址" @@ -2751,22 +2773,79 @@ msgstr "地址" msgid "Port" msgstr "端口" -#: plinth/modules/minetest/views.py:70 +#: plinth/modules/minetest/views.py:71 msgid "Maximum players configuration updated" msgstr "最大玩家配置已更新" -#: plinth/modules/minetest/views.py:77 +#: plinth/modules/minetest/views.py:78 msgid "Creative mode configuration updated" msgstr "创意模式配置已更新" -#: plinth/modules/minetest/views.py:83 +#: plinth/modules/minetest/views.py:84 msgid "PVP configuration updated" msgstr "玩家对战(PVP)配置已更新" -#: plinth/modules/minetest/views.py:89 +#: plinth/modules/minetest/views.py:90 msgid "Damage configuration updated" msgstr "伤害配置已更新" +#: plinth/modules/minidlna/__init__.py:43 +#, fuzzy +#| msgid "Mumble Voice Chat Server" +msgid "Simple Media Server" +msgstr "Mumble 语音聊天服务器" + +#: plinth/modules/minidlna/__init__.py:46 +msgid "" +"MiniDLNA is a simple media server software, with the aim of being fully " +"compliant with DLNA/UPnP-AV clients. The MiniDNLA daemon serves media files " +"(music, pictures, and video) to clients on a network. DNLA/UPnP is zero " +"configuration protocol and is compliant with any device passing the DLNA " +"Certification like portable media players, Smartphones, Televisions, and " +"gaming systems (such as PS3 and Xbox 360) or applications such as totem and " +"Kodi." +msgstr "" + +#: plinth/modules/minidlna/__init__.py:58 +msgid "Media streaming server" +msgstr "" + +#: plinth/modules/minidlna/forms.py:30 +msgid "Media Files Directory" +msgstr "" + +#: plinth/modules/minidlna/forms.py:31 +msgid "" +"Directory that MiniDLNA Server will read for content. All sub-directories of " +"this will be also scanned for media files. If you change the default ensure " +"that the new directory exists and that is readable from the \"minidlna\" " +"user. Any user media directories (\"/home/username/\") will usually work." +msgstr "" + +#: plinth/modules/minidlna/manifest.py:25 +msgid "vlc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:64 +msgid "kodi" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:103 +msgid "yaacc" +msgstr "" + +#: plinth/modules/minidlna/manifest.py:114 +msgid "totem" +msgstr "" + +#: plinth/modules/minidlna/views.py:57 +msgid "Specified directory does not exist." +msgstr "" + +#: plinth/modules/minidlna/views.py:63 +msgid "Updated media directory" +msgstr "" + #: plinth/modules/mldonkey/__init__.py:40 #: plinth/modules/mldonkey/manifest.py:27 #, fuzzy @@ -2774,33 +2853,33 @@ msgstr "伤害配置已更新" msgid "MLDonkey" msgstr "Monkeysphere" -#: plinth/modules/mldonkey/__init__.py:42 +#: plinth/modules/mldonkey/__init__.py:44 #, fuzzy #| msgid "Enable Shaarli" msgid "Peer-to-peer File Sharing" msgstr "启用 Shaarli" -#: plinth/modules/mldonkey/__init__.py:45 +#: plinth/modules/mldonkey/__init__.py:47 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:48 +#: plinth/modules/mldonkey/__init__.py:50 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:53 +#: plinth/modules/mldonkey/__init__.py:55 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" -#: plinth/modules/mldonkey/__init__.py:61 +#: plinth/modules/mldonkey/__init__.py:63 msgid "Download files using eDonkey applications" msgstr "" @@ -2979,11 +3058,11 @@ msgstr "已发布到密钥服务器的密钥。" msgid "Error occurred while publishing key." msgstr "发布密钥时出现错误。" -#: plinth/modules/mumble/__init__.py:35 plinth/modules/mumble/manifest.py:27 +#: plinth/modules/mumble/__init__.py:34 plinth/modules/mumble/manifest.py:27 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:37 +#: plinth/modules/mumble/__init__.py:38 #, fuzzy #| msgid "" #| "Voice Chat \n" @@ -2993,13 +3072,13 @@ msgstr "" "语音聊天\n" "(Mumble)" -#: plinth/modules/mumble/__init__.py:44 +#: plinth/modules/mumble/__init__.py:45 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "Mumble 是一个开放源码的低延迟、 加密、 高品质语音聊天软件。" -#: plinth/modules/mumble/__init__.py:46 +#: plinth/modules/mumble/__init__.py:47 msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3008,6 +3087,18 @@ msgstr "" "您可以使用常规端口 64738 连接到您的 Mumble 服务器。您可以从桌面和 Android 设" "备连接 Mumble 客户端。" +#: plinth/modules/mumble/forms.py:31 +#, fuzzy +#| msgid "SSH server password" +msgid "Set SuperUser Password" +msgstr "SSH 服务器密码" + +#: plinth/modules/mumble/forms.py:34 +msgid "" +"Optional. Leave this field blank to keep the current password. SuperUser " +"password can be used to manage permissions in Mumble." +msgstr "" + #: plinth/modules/mumble/manifest.py:52 msgid "Plumble" msgstr "" @@ -3016,6 +3107,12 @@ msgstr "" msgid "Mumblefly" msgstr "" +#: plinth/modules/mumble/views.py:57 +#, fuzzy +#| msgid "Password changed successfully." +msgid "SuperUser password successfully updated." +msgstr "已成功更改密码。" + #: plinth/modules/names/__init__.py:37 msgid "Name Services" msgstr "名称服务" @@ -3062,43 +3159,43 @@ msgstr "在 IPv{kind} 上使用 DNSSEC" msgid "Connection Type" msgstr "连接类型" -#: plinth/modules/networks/forms.py:44 +#: plinth/modules/networks/forms.py:43 msgid "Connection Name" msgstr "连接名称" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:45 msgid "Physical Interface" msgstr "物理接口" -#: plinth/modules/networks/forms.py:48 +#: plinth/modules/networks/forms.py:46 msgid "The network device that this connection should be bound to." msgstr "连接应绑定到的网络设备。" -#: plinth/modules/networks/forms.py:51 +#: plinth/modules/networks/forms.py:49 msgid "Firewall Zone" msgstr "防火墙区域" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:50 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "防火墙区域将控制哪些服务可用在此接口。选择内部只有受信任的网络。" -#: plinth/modules/networks/forms.py:55 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:78 msgid "External" msgstr "外网" -#: plinth/modules/networks/forms.py:56 +#: plinth/modules/networks/forms.py:53 #: plinth/modules/networks/templates/connections_diagram.html:107 msgid "Internal" msgstr "内网" -#: plinth/modules/networks/forms.py:58 +#: plinth/modules/networks/forms.py:55 msgid "IPv4 Addressing Method" msgstr "IPv4 寻址方式" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:57 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3108,39 +3205,39 @@ msgstr "" "“自动”方式可以让 {box_name} 从此网络请求一个配置使其成为一个客户端。“共享”方" "式会让 {box_name} 作为一个路由器,配置此网络上的客户端并共享互联网连接。" -#: plinth/modules/networks/forms.py:66 +#: plinth/modules/networks/forms.py:62 msgid "Automatic (DHCP)" msgstr "自动 (DHCP)" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:62 msgid "Shared" msgstr "共享" -#: plinth/modules/networks/forms.py:75 +#: plinth/modules/networks/forms.py:68 msgid "Netmask" msgstr "子网掩码" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "可选的值。如果为空,则将使用基于地址的默认子网掩码。" -#: plinth/modules/networks/forms.py:81 plinth/modules/networks/forms.py:121 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 #: plinth/modules/networks/templates/connection_show.html:202 #: plinth/modules/networks/templates/connection_show.html:241 msgid "Gateway" msgstr "网关" -#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:122 +#: plinth/modules/networks/forms.py:73 plinth/modules/networks/forms.py:103 msgid "Optional value." msgstr "可选的值。" -#: plinth/modules/networks/forms.py:86 plinth/modules/networks/forms.py:126 +#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:106 msgid "DNS Server" msgstr "DNS 服务器" -#: plinth/modules/networks/forms.py:87 +#: plinth/modules/networks/forms.py:77 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3148,11 +3245,11 @@ msgstr "" "可选的值。如果给出了此值和 IPv4 寻址方法是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:133 +#: plinth/modules/networks/forms.py:82 plinth/modules/networks/forms.py:112 msgid "Second DNS Server" msgstr "备选 DNS 服务器" -#: plinth/modules/networks/forms.py:94 +#: plinth/modules/networks/forms.py:83 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3160,38 +3257,38 @@ msgstr "" "可选的值。如果给出了此值和 IPv4 寻址方式是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:100 +#: plinth/modules/networks/forms.py:88 msgid "IPv6 Addressing Method" msgstr "IPv6 寻址方式" -#: plinth/modules/networks/forms.py:103 +#: plinth/modules/networks/forms.py:90 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "“自动”方式可以让 {box_name} 从此网络请求一个配置使其成为一个客户端。" -#: plinth/modules/networks/forms.py:106 plinth/modules/networks/forms.py:278 +#: plinth/modules/networks/forms.py:93 plinth/modules/networks/forms.py:254 msgid "Automatic" msgstr "自动" -#: plinth/modules/networks/forms.py:107 +#: plinth/modules/networks/forms.py:93 msgid "Automatic, DHCP only" msgstr "自动,只使用 DHCP" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:94 msgid "Ignore" msgstr "忽略" -#: plinth/modules/networks/forms.py:115 +#: plinth/modules/networks/forms.py:98 msgid "Prefix" msgstr "前缀" -#: plinth/modules/networks/forms.py:116 +#: plinth/modules/networks/forms.py:99 msgid "Value between 1 and 128." msgstr "在 1 到 128 之间取值。" -#: plinth/modules/networks/forms.py:127 +#: plinth/modules/networks/forms.py:107 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3199,7 +3296,7 @@ msgstr "" "可选的值。如果给出了此值和 IPv6 寻址方法是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:134 +#: plinth/modules/networks/forms.py:113 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3207,64 +3304,64 @@ msgstr "" "可选的值。如果给出了此值和 IPv6 寻址方式是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:144 +#: plinth/modules/networks/forms.py:122 msgid "-- select --" msgstr "-- 选择 --" -#: plinth/modules/networks/forms.py:269 +#: plinth/modules/networks/forms.py:247 #: plinth/modules/networks/templates/connection_show.html:144 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:270 +#: plinth/modules/networks/forms.py:248 msgid "The visible name of the network." msgstr "可见网络的名称。" -#: plinth/modules/networks/forms.py:272 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:157 msgid "Mode" msgstr "模式" -#: plinth/modules/networks/forms.py:273 +#: plinth/modules/networks/forms.py:250 msgid "Infrastructure" msgstr "基础架构" -#: plinth/modules/networks/forms.py:274 +#: plinth/modules/networks/forms.py:251 msgid "Access Point" msgstr "访问点" -#: plinth/modules/networks/forms.py:275 +#: plinth/modules/networks/forms.py:252 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:277 +#: plinth/modules/networks/forms.py:254 msgid "Frequency Band" msgstr "频带" -#: plinth/modules/networks/forms.py:279 +#: plinth/modules/networks/forms.py:255 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:280 +#: plinth/modules/networks/forms.py:256 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:282 +#: plinth/modules/networks/forms.py:258 #: plinth/modules/networks/templates/connection_show.html:173 msgid "Channel" msgstr "信道" -#: plinth/modules/networks/forms.py:283 +#: plinth/modules/networks/forms.py:259 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "可选值。可通过指定频宽限制无线信道。为空或者填 0 表示自动选择。" -#: plinth/modules/networks/forms.py:290 +#: plinth/modules/networks/forms.py:264 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:291 +#: plinth/modules/networks/forms.py:265 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3273,21 +3370,21 @@ msgstr "" "可选的值。指定接入点的标识。当要连接到一个接入点时,只会连接到符合给出值的提" "供者。例如:00:11:22:aa:bb:cc。" -#: plinth/modules/networks/forms.py:298 +#: plinth/modules/networks/forms.py:271 msgid "Authentication Mode" msgstr "身份验证模式" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:272 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "如果无线网络安全的和要求客户端具有密码才能连接,请选择 WPA。" -#: plinth/modules/networks/forms.py:301 +#: plinth/modules/networks/forms.py:274 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:302 +#: plinth/modules/networks/forms.py:274 msgid "Open" msgstr "打开" @@ -3494,7 +3591,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:186 #: plinth/modules/networks/templates/connection_show.html:227 -#: plinth/modules/shadowsocks/forms.py:65 +#: plinth/modules/shadowsocks/forms.py:64 msgid "Method" msgstr "方法" @@ -3510,6 +3607,7 @@ msgstr "DNS 服务器" #: plinth/modules/networks/templates/connection_show.html:216 #: plinth/modules/networks/templates/connection_show.html:255 +#: plinth/modules/storage/forms.py:150 msgid "Default" msgstr "默认" @@ -3522,7 +3620,7 @@ msgid "This connection is not active." msgstr "此连接未处于激活状态。" #: plinth/modules/networks/templates/connection_show.html:266 -#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:49 +#: plinth/modules/security/__init__.py:37 plinth/modules/security/views.py:47 msgid "Security" msgstr "安全" @@ -3581,13 +3679,13 @@ msgstr "间距" #: plinth/modules/networks/templates/connections_diagram.html:83 #: plinth/modules/networks/templates/connections_diagram.html:113 -#: plinth/network.py:36 +#: plinth/network.py:35 msgid "Ethernet" msgstr "以太网" #: plinth/modules/networks/templates/connections_diagram.html:86 #: plinth/modules/networks/templates/connections_diagram.html:116 -#: plinth/network.py:37 +#: plinth/network.py:36 msgid "Wi-Fi" msgstr "Wi-Fi" @@ -3634,13 +3732,13 @@ msgstr "创建..." msgid "OpenVPN" msgstr "打开" -#: plinth/modules/openvpn/__init__.py:41 +#: plinth/modules/openvpn/__init__.py:43 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "虚拟专用网络(OpenVPN)" -#: plinth/modules/openvpn/__init__.py:45 +#: plinth/modules/openvpn/__init__.py:47 #, python-brace-format msgid "" "Virtual Private Network (VPN) is a technique for securely connecting two " @@ -3655,13 +3753,13 @@ msgstr "" "供的私人/内部服务。您还可以通过 {box_name} 访问互联网的其他部分,以增加安全性" "和匿名性。" -#: plinth/modules/openvpn/__init__.py:77 +#: plinth/modules/openvpn/__init__.py:79 #, python-brace-format msgid "" "Download Profile" msgstr "" -#: plinth/modules/openvpn/forms.py:28 +#: plinth/modules/openvpn/forms.py:27 msgid "Enable OpenVPN server" msgstr "启用 OpenVPN 服务器" @@ -3828,7 +3926,7 @@ msgstr "" "选择您的 pagekite 服务器。设置\"pagekite.net\"以便使用默认的 pagekite.net 服" "务器。" -#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:57 +#: plinth/modules/pagekite/forms.py:71 plinth/modules/shadowsocks/forms.py:55 msgid "Server port" msgstr "服务器端口" @@ -4082,13 +4180,13 @@ msgstr "现在关闭" msgid "Privoxy" msgstr "启用 Privoxy" -#: plinth/modules/privoxy/__init__.py:44 +#: plinth/modules/privoxy/__init__.py:46 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "Web Proxy" msgstr "Privoxy 网页代理" -#: plinth/modules/privoxy/__init__.py:47 +#: plinth/modules/privoxy/__init__.py:49 msgid "" "Privoxy is a non-caching web proxy with advanced filtering capabilities for " "enhancing privacy, modifying web page data and HTTP headers, controlling " @@ -4097,7 +4195,7 @@ msgstr "" "Privoxy 是一个非缓存Web代理,具有高级过滤功能,用于增强隐私,修改网页数据和 " "HTTP 标头,控制访问,以及删除广告和其他令人讨厌的互联网垃圾。" -#: plinth/modules/privoxy/__init__.py:52 +#: plinth/modules/privoxy/__init__.py:54 #, python-brace-format msgid "" "You can use Privoxy by modifying your browser proxy settings to your " @@ -4111,7 +4209,7 @@ msgstr "" "privoxy.org\">http://config.privoxy.org/ 或 http://p.p 中查看其配置详细信息和文档" -#: plinth/modules/privoxy/__init__.py:142 +#: plinth/modules/privoxy/__init__.py:145 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "在 tcp{kind} 上通过 {proxy} 访问 {url}" @@ -4120,13 +4218,13 @@ msgstr "在 tcp{kind} 上通过 {proxy} 访问 {url}" msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:47 +#: plinth/modules/quassel/__init__.py:49 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" msgstr "Quassel IRC 客户端" -#: plinth/modules/quassel/__init__.py:51 +#: plinth/modules/quassel/__init__.py:53 #, python-brace-format msgid "" "Quassel is an IRC application that is split into two parts, a \"core\" and a " @@ -4141,7 +4239,7 @@ msgstr "" "以运行 Quassel 核心服务,使您始终在线,并且可以使用桌面或移动设备上的一个或多" "个 Quassel 客户端连接和断开连接。" -#: plinth/modules/quassel/__init__.py:58 +#: plinth/modules/quassel/__init__.py:60 msgid "" "You can connect to your Quassel core on the default Quassel port 4242. " "Clients to connect to Quassel from your 支持的客户端应用程序。" "任何拥有 {box_name} 登录名的用户都可以访问 Radicale。" -#: plinth/modules/radicale/__init__.py:56 +#: plinth/modules/radicale/__init__.py:58 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4268,7 +4366,7 @@ msgid "" "existing calendars and address books." msgstr "" -#: plinth/modules/radicale/views.py:56 +#: plinth/modules/radicale/views.py:57 msgid "Access rights configuration updated" msgstr "访问权配置已更新" @@ -4386,7 +4484,7 @@ msgstr "" msgid "Roundcube" msgstr "启用 Roundcube" -#: plinth/modules/roundcube/__init__.py:37 +#: plinth/modules/roundcube/__init__.py:39 #, fuzzy #| msgid "" #| "Email Client \n" @@ -4396,7 +4494,7 @@ msgstr "" "邮件客户端\n" "(Roundcube)" -#: plinth/modules/roundcube/__init__.py:40 +#: plinth/modules/roundcube/__init__.py:42 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4407,7 +4505,7 @@ msgstr "" "户界面。它提供您需要的从电子邮件客户端、MIME支持、地址簿、文件夹操作、消息搜" "索到拼写检查的完整功能。" -#: plinth/modules/roundcube/__init__.py:45 +#: plinth/modules/roundcube/__init__.py:47 #, fuzzy #| msgid "" #| "You can access Roundcube from /roundcube. " @@ -4428,7 +4526,7 @@ msgstr "" "如 imap.example.com。对于基于 SSL 的 IMAP(建议),服务器填写为" "类似 imaps://imap.example.com。" -#: plinth/modules/roundcube/__init__.py:51 +#: plinth/modules/roundcube/__init__.py:53 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4446,13 +4544,13 @@ msgstr "" msgid "Samba" msgstr "" -#: plinth/modules/samba/__init__.py:48 +#: plinth/modules/samba/__init__.py:50 msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" -#: plinth/modules/samba/__init__.py:51 +#: plinth/modules/samba/__init__.py:53 #, python-brace-format msgid "" "After installation, you can choose which disks to use for sharing. Enabled " @@ -4460,7 +4558,7 @@ msgid "" "accessible under Network section in the file manager on your computer." msgstr "" -#: plinth/modules/samba/__init__.py:57 +#: plinth/modules/samba/__init__.py:59 msgid "Access shared folders from inside the server" msgstr "" @@ -4513,25 +4611,25 @@ msgstr "共享" msgid "Action" msgstr "行动" -#: plinth/modules/samba/views.py:74 +#: plinth/modules/samba/views.py:75 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} 已删除。" -#: plinth/modules/samba/views.py:79 +#: plinth/modules/samba/views.py:80 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "安装应用程序出错:{error}" -#: plinth/modules/samba/views.py:95 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "共享" -#: plinth/modules/samba/views.py:100 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4541,25 +4639,25 @@ msgstr "安装应用程序出错:{error}" msgid "Searx" msgstr "" -#: plinth/modules/searx/__init__.py:42 +#: plinth/modules/searx/__init__.py:44 #, fuzzy #| msgid "Web Server" msgid "Web Search" msgstr "Web 服务器" -#: plinth/modules/searx/__init__.py:45 +#: plinth/modules/searx/__init__.py:47 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" -#: plinth/modules/searx/__init__.py:47 +#: plinth/modules/searx/__init__.py:49 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:51 +#: plinth/modules/searx/__init__.py:53 msgid "Search the web" msgstr "" @@ -4595,16 +4693,16 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:59 plinth/modules/searx/views.py:70 +#: plinth/modules/searx/views.py:60 plinth/modules/searx/views.py:71 #: plinth/modules/tor/views.py:148 plinth/modules/tor/views.py:175 msgid "Configuration updated." msgstr "配置已更新。" -#: plinth/modules/security/forms.py:29 +#: plinth/modules/security/forms.py:28 msgid "Restrict console logins (recommended)" msgstr "限制控制台访问(建议)" -#: plinth/modules/security/forms.py:30 +#: plinth/modules/security/forms.py:29 msgid "" "When this option is enabled, only users in the \"admin\" group will be able " "to log in to console or via SSH. Console users may be able to access some " @@ -4613,11 +4711,11 @@ msgstr "" "若启用此项,只有处于“admin”组中的用户能够通过 SSH 访问控制台。控制台用户可以" "访问一些服务而不需要认证。" -#: plinth/modules/security/forms.py:35 +#: plinth/modules/security/forms.py:34 msgid "Fail2Ban (recommended)" msgstr "" -#: plinth/modules/security/forms.py:36 +#: plinth/modules/security/forms.py:35 msgid "" "When this option is enabled, Fail2Ban will limit brute force break-in " "attempts to the SSH server and other enabled password protected internet-" @@ -4632,7 +4730,7 @@ msgid "Show security report" msgstr "安全" #: plinth/modules/security/templates/security_report.html:25 -#: plinth/modules/security/views.py:91 +#: plinth/modules/security/views.py:87 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -4665,12 +4763,12 @@ msgstr "" msgid "Past Vulnerabilities" msgstr "" -#: plinth/modules/security/views.py:73 +#: plinth/modules/security/views.py:69 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "设置限制访问错误:{exception}" -#: plinth/modules/security/views.py:76 +#: plinth/modules/security/views.py:72 msgid "Updated security configuration" msgstr "安全配置已更新" @@ -4711,18 +4809,18 @@ msgstr "" msgid "Shadowsocks" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:37 +#: plinth/modules/shadowsocks/__init__.py:39 msgid "Socks5 Proxy" msgstr "" -#: plinth/modules/shadowsocks/__init__.py:44 +#: plinth/modules/shadowsocks/__init__.py:46 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:48 +#: plinth/modules/shadowsocks/__init__.py:50 #, python-brace-format msgid "" "Your {box_name} can run a Shadowsocks client, that can connect to a " @@ -4731,7 +4829,7 @@ msgid "" "the Shadowsocks server." msgstr "" -#: plinth/modules/shadowsocks/__init__.py:53 +#: plinth/modules/shadowsocks/__init__.py:55 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" @@ -4742,27 +4840,27 @@ msgstr "" msgid "Recommended" msgstr "" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:52 #, fuzzy #| msgid "Service" msgid "Server" msgstr "服务" -#: plinth/modules/shadowsocks/forms.py:54 +#: plinth/modules/shadowsocks/forms.py:53 msgid "Server hostname or IP address" msgstr "" -#: plinth/modules/shadowsocks/forms.py:58 +#: plinth/modules/shadowsocks/forms.py:57 #, fuzzy #| msgid "Server port" msgid "Server port number" msgstr "服务器端口" -#: plinth/modules/shadowsocks/forms.py:61 +#: plinth/modules/shadowsocks/forms.py:60 msgid "Password used to encrypt data. Must match server password." msgstr "" -#: plinth/modules/shadowsocks/forms.py:66 +#: plinth/modules/shadowsocks/forms.py:65 msgid "Encryption method. Must match setting on server." msgstr "" @@ -4827,62 +4925,62 @@ msgstr "此服务已存在" msgid "Shares should be either public or shared with at least one group" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:43 -#: plinth/modules/sharing/templates/sharing.html:46 +#: plinth/modules/sharing/templates/sharing.html:39 +#: plinth/modules/sharing/templates/sharing.html:42 #, fuzzy #| msgid "Add Service" msgid "Add share" msgstr "添加服务" -#: plinth/modules/sharing/templates/sharing.html:51 +#: plinth/modules/sharing/templates/sharing.html:47 msgid "No shares currently configured." msgstr "" -#: plinth/modules/sharing/templates/sharing.html:57 +#: plinth/modules/sharing/templates/sharing.html:53 msgid "Disk Path" msgstr "" -#: plinth/modules/sharing/templates/sharing.html:58 +#: plinth/modules/sharing/templates/sharing.html:54 #, fuzzy #| msgid "Shared" msgid "Shared Over" msgstr "共享" -#: plinth/modules/sharing/templates/sharing.html:59 +#: plinth/modules/sharing/templates/sharing.html:55 #, fuzzy #| msgid "Groups" msgid "With Groups" msgstr "群組" -#: plinth/modules/sharing/templates/sharing.html:77 +#: plinth/modules/sharing/templates/sharing.html:73 msgid "public access" msgstr "" -#: plinth/modules/sharing/views.py:54 +#: plinth/modules/sharing/views.py:55 #, fuzzy #| msgid "Shared" msgid "Share added." msgstr "共享" -#: plinth/modules/sharing/views.py:59 +#: plinth/modules/sharing/views.py:60 #, fuzzy #| msgid "Add Service" msgid "Add Share" msgstr "添加服务" -#: plinth/modules/sharing/views.py:74 +#: plinth/modules/sharing/views.py:75 #, fuzzy #| msgid "Shared" msgid "Share edited." msgstr "共享" -#: plinth/modules/sharing/views.py:79 +#: plinth/modules/sharing/views.py:80 #, fuzzy #| msgid "Edit User" msgid "Edit Share" msgstr "编辑用户" -#: plinth/modules/sharing/views.py:110 +#: plinth/modules/sharing/views.py:111 #, fuzzy #| msgid "{name} deleted." msgid "Share deleted." @@ -4953,51 +5051,51 @@ msgstr "" msgid "Enable or disable snapshots before and after software installation" msgstr "" -#: plinth/modules/snapshot/forms.py:46 +#: plinth/modules/snapshot/forms.py:47 #, fuzzy #| msgid "Create Snapshot" msgid "Hourly Snapshots Limit" msgstr "创建快照" -#: plinth/modules/snapshot/forms.py:47 +#: plinth/modules/snapshot/forms.py:48 msgid "Keep a maximum of this many hourly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:50 +#: plinth/modules/snapshot/forms.py:51 #, fuzzy #| msgid "Delete Snapshot" msgid "Daily Snapshots Limit" msgstr "删除快照" -#: plinth/modules/snapshot/forms.py:51 +#: plinth/modules/snapshot/forms.py:52 msgid "Keep a maximum of this many daily snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:54 +#: plinth/modules/snapshot/forms.py:55 #, fuzzy #| msgid "Delete Snapshot" msgid "Weekly Snapshots Limit" msgstr "删除快照" -#: plinth/modules/snapshot/forms.py:55 +#: plinth/modules/snapshot/forms.py:56 msgid "Keep a maximum of this many weekly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:58 +#: plinth/modules/snapshot/forms.py:59 msgid "Monthly Snapshots Limit" msgstr "" -#: plinth/modules/snapshot/forms.py:59 +#: plinth/modules/snapshot/forms.py:60 msgid "Keep a maximum of this many monthly snapshots." msgstr "" -#: plinth/modules/snapshot/forms.py:62 +#: plinth/modules/snapshot/forms.py:63 #, fuzzy #| msgid "Delete Snapshot" msgid "Yearly Snapshots Limit" msgstr "删除快照" -#: plinth/modules/snapshot/forms.py:63 +#: plinth/modules/snapshot/forms.py:64 msgid "" "Keep a maximum of this many yearly snapshots. The default value is 0 " "(disabled)." @@ -5081,13 +5179,13 @@ msgstr "创建快照" msgid "Created snapshot." msgstr "创建快照。" -#: plinth/modules/snapshot/views.py:157 +#: plinth/modules/snapshot/views.py:156 #, fuzzy #| msgid "Access rights configuration updated" msgid "Storage snapshots configuration updated" msgstr "访问权配置已更新" -#: plinth/modules/snapshot/views.py:161 plinth/modules/tor/views.py:78 +#: plinth/modules/snapshot/views.py:160 plinth/modules/tor/views.py:78 #, python-brace-format msgid "Action error: {0} [{1}] [{2}]" msgstr "操作错误:{0} [{1}] [{2}]" @@ -5200,94 +5298,138 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:215 +#: plinth/modules/storage/__init__.py:216 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:219 +#: plinth/modules/storage/__init__.py:220 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:223 +#: plinth/modules/storage/__init__.py:224 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:227 +#: plinth/modules/storage/__init__.py:228 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:230 +#: plinth/modules/storage/__init__.py:231 #, 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:238 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:239 +#: plinth/modules/storage/__init__.py:240 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:241 +#: plinth/modules/storage/__init__.py:242 #, 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:244 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:247 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:248 +#: plinth/modules/storage/__init__.py:249 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:252 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:254 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:259 +#: plinth/modules/storage/__init__.py:260 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:261 +#: plinth/modules/storage/__init__.py:262 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "此服务已存在" -#: plinth/modules/storage/__init__.py:263 +#: plinth/modules/storage/__init__.py:264 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro 服务未运行" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:267 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:269 +#: plinth/modules/storage/__init__.py:270 msgid "The device is mounted by another user." msgstr "" +#: plinth/modules/storage/forms.py:75 +#, fuzzy +#| msgid "Invalid hostname" +msgid "Invalid directory name." +msgstr "无效的主机名" + +#: plinth/modules/storage/forms.py:91 +msgid "Directory does not exist." +msgstr "" + +#: plinth/modules/storage/forms.py:93 +#, fuzzy +#| msgid "Download directory" +msgid "Path is not a directory." +msgstr "下载目录" + +#: plinth/modules/storage/forms.py:96 +msgid "Directory is not readable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:99 +msgid "Directory is not writable by the user." +msgstr "" + +#: plinth/modules/storage/forms.py:104 +#, fuzzy +#| msgid "Download directory" +msgid "Directory" +msgstr "下载目录" + +#: plinth/modules/storage/forms.py:107 +msgid "Subdirectory (optional)" +msgstr "" + +#: plinth/modules/storage/forms.py:154 +#, fuzzy +#| msgid "Publish Key" +msgid "Samba share" +msgstr "发布密钥" + +#: plinth/modules/storage/forms.py:155 +msgid "Other directory (specify below)" +msgstr "" + #: plinth/modules/storage/templates/storage.html:35 #, fuzzy #| msgid "The following disks are in use:" @@ -5359,11 +5501,11 @@ msgstr "" msgid "Syncthing" msgstr "" -#: plinth/modules/syncthing/__init__.py:42 +#: plinth/modules/syncthing/__init__.py:44 msgid "File Synchronization" msgstr "" -#: plinth/modules/syncthing/__init__.py:45 +#: plinth/modules/syncthing/__init__.py:47 msgid "" "Syncthing is an application to synchronize files across multiple devices, e." "g. your desktop computer and mobile phone. Creation, modification, or " @@ -5371,7 +5513,7 @@ msgid "" "other devices that also run Syncthing." msgstr "" -#: plinth/modules/syncthing/__init__.py:50 +#: plinth/modules/syncthing/__init__.py:52 #, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " @@ -5382,7 +5524,7 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" group." msgstr "" -#: plinth/modules/syncthing/__init__.py:61 +#: plinth/modules/syncthing/__init__.py:63 #, fuzzy #| msgid "Install this application?" msgid "Administer Syncthing application" @@ -5392,11 +5534,11 @@ msgstr "安装此应用程序?" msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:45 +#: plinth/modules/tahoe/__init__.py:47 msgid "Distributed File Storage" msgstr "" -#: plinth/modules/tahoe/__init__.py:119 +#: plinth/modules/tahoe/__init__.py:121 msgid "" "Tahoe-LAFS is a decentralized secure file storage system. It uses provider " "independent security to store files over a distributed network of storage " @@ -5404,7 +5546,7 @@ msgid "" "remaining nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:124 +#: plinth/modules/tahoe/__init__.py:126 #, python-brace-format msgid "" "This {box_name} hosts a storage node and an introducer by default. " @@ -5468,78 +5610,78 @@ msgstr "" "href=\"https://www.torproject.org/download/download-easy.html.en\">Tor浏览器" "。" -#: plinth/modules/tor/__init__.py:80 +#: plinth/modules/tor/__init__.py:82 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "隐藏的 Tor 服务" -#: plinth/modules/tor/__init__.py:84 +#: plinth/modules/tor/__init__.py:86 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:88 +#: plinth/modules/tor/__init__.py:90 msgid "Tor Bridge Relay" msgstr "Tor 网桥中继" -#: plinth/modules/tor/__init__.py:165 +#: plinth/modules/tor/__init__.py:167 msgid "Tor relay port available" msgstr "Tor 中继端口可用" -#: plinth/modules/tor/__init__.py:175 +#: plinth/modules/tor/__init__.py:177 msgid "Obfs3 transport registered" msgstr "已注册 Obfs3 传输" -#: plinth/modules/tor/__init__.py:185 +#: plinth/modules/tor/__init__.py:187 msgid "Obfs4 transport registered" msgstr "已注册 Obfs4 传输" -#: plinth/modules/tor/__init__.py:226 +#: plinth/modules/tor/__init__.py:228 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "在 tcp{kind} 上通过 Tor 访问 {url}" -#: plinth/modules/tor/__init__.py:237 +#: plinth/modules/tor/__init__.py:239 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "确认使用 Tor 通过 tcp{kind} 访问 {url}" -#: plinth/modules/tor/forms.py:47 +#: plinth/modules/tor/forms.py:46 msgid "" "Enter a valid bridge with this format: [transport] IP:ORPort [fingerprint]" msgstr "" -#: plinth/modules/tor/forms.py:90 +#: plinth/modules/tor/forms.py:88 msgid "Enable Tor" msgstr "启用 Tor" -#: plinth/modules/tor/forms.py:93 +#: plinth/modules/tor/forms.py:90 msgid "Use upstream bridges to connect to Tor network" msgstr "" -#: plinth/modules/tor/forms.py:96 +#: plinth/modules/tor/forms.py:92 msgid "" "When enabled, the bridges configured below will be used to connect to the " "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -#: plinth/modules/tor/forms.py:102 +#: plinth/modules/tor/forms.py:97 msgid "Upstream bridges" msgstr "" -#: plinth/modules/tor/forms.py:105 +#: plinth/modules/tor/forms.py:99 msgid "" "You can get some bridges from https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -#: plinth/modules/tor/forms.py:112 +#: plinth/modules/tor/forms.py:105 msgid "Enable Tor relay" msgstr "启用 Tor 中继" -#: plinth/modules/tor/forms.py:115 +#: plinth/modules/tor/forms.py:106 #, python-brace-format msgid "" "When enabled, your {box_name} will run a Tor relay and donate bandwidth to " @@ -5549,11 +5691,11 @@ msgstr "" "启用后,您的 {box_name} 将运行 Tor 中继,并向 Tor 网络分配带宽。如果您的上传" "和下载带宽超过 2 MB/s,请执行此操作。" -#: plinth/modules/tor/forms.py:120 +#: plinth/modules/tor/forms.py:111 msgid "Enable Tor bridge relay" msgstr "启用 Tor 网桥中继" -#: plinth/modules/tor/forms.py:123 +#: plinth/modules/tor/forms.py:113 msgid "" "When enabled, relay information is published in the Tor bridge database " "instead of public Tor relay database making it harder to censor this node. " @@ -5562,31 +5704,31 @@ msgstr "" "当启用时,中继信息在 Tor 桥数据库中发布,而不是公共 Tor 中继数据库,使得更难" "以检查此节点。这有助于其他人绕过审查。" -#: plinth/modules/tor/forms.py:128 +#: plinth/modules/tor/forms.py:118 #, fuzzy #| msgid "Enable Tor Hidden Service" -msgid "Enable Tor Onion Service" +msgid "Enable Tor Hidden Service" msgstr "启用 Tor 隐藏服务" -#: plinth/modules/tor/forms.py:131 +#: plinth/modules/tor/forms.py:120 #, fuzzy, python-brace-format #| msgid "" #| "A hidden service will allow {box_name} to provide selected services (such " #| "as wiki or chat) without revealing its location. Do not use this for " #| "strong anonymity yet." msgid "" -"An onion service will allow {box_name} to provide selected services (such as " +"A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" "隐藏的服务将允许 {box_name} 提供某些服务(如维基或聊天),而不暴露其位置。不" "要使用在强匿名状态。" -#: plinth/modules/tor/forms.py:136 +#: plinth/modules/tor/forms.py:125 msgid "Download software packages over Tor" msgstr "通过 Tor 下载软件包" -#: plinth/modules/tor/forms.py:138 +#: plinth/modules/tor/forms.py:126 msgid "" "When enabled, software will be downloaded over the Tor network for " "installations and upgrades. This adds a degree of privacy and security " @@ -5595,7 +5737,7 @@ msgstr "" "当启用时,软件将会下载 Tor 网络的安装和升级。这在软件下载过程中添加了一定程度" "的隐私和安全。" -#: plinth/modules/tor/forms.py:151 +#: plinth/modules/tor/forms.py:141 msgid "Specify at least one upstream bridge to use upstream bridges." msgstr "" @@ -5650,7 +5792,7 @@ msgstr "Tor SOCKS 端口是你 %(box_name)s 上的 TCP 端口 9050 。" msgid "Transmission" msgstr "Transmission BitTorrent" -#: plinth/modules/transmission/__init__.py:46 +#: plinth/modules/transmission/__init__.py:48 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." @@ -5658,24 +5800,15 @@ msgstr "" "BitTorrent 是对等文件共享协议。Transmission 守护进程处理 Bitorrent 文件共享。" "请注意,BitTorrent 不是匿名。" -#: plinth/modules/transmission/forms.py:30 +#: plinth/modules/transmission/forms.py:35 msgid "Download directory" msgstr "下载目录" -#: plinth/modules/transmission/forms.py:31 -msgid "" -"Directory where downloads are saved. If you change the default directory, " -"ensure that the new directory exists and is writable by \"debian-transmission" -"\" user." -msgstr "" -"保存下载的目录。 如果您更改默认目录,请确保新目录存在并且允许用户“debian-" -"transmission”可写。" - #: plinth/modules/ttrss/__init__.py:43 plinth/modules/ttrss/manifest.py:34 msgid "Tiny Tiny RSS" msgstr "" -#: plinth/modules/ttrss/__init__.py:45 +#: plinth/modules/ttrss/__init__.py:47 #, fuzzy #| msgid "" #| "News Feed Reader \n" @@ -5685,7 +5818,7 @@ msgstr "" "新闻收取阅读器\n" "(Tiny Tiny RSS)" -#: plinth/modules/ttrss/__init__.py:48 +#: plinth/modules/ttrss/__init__.py:50 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 " @@ -5694,7 +5827,7 @@ msgstr "" "Tiny Tiny RSS是一个新闻源(RSS / Atom)阅读器和聚合器,旨在允许从任何位置读取" "新闻,同时提供尽可能接近真实的桌面应用程序体验。" -#: plinth/modules/ttrss/__init__.py:52 +#: plinth/modules/ttrss/__init__.py:54 #, fuzzy, python-brace-format #| msgid "" #| "When enabled, Tiny Tiny RSS will be available from /" @@ -5706,14 +5839,14 @@ msgstr "" "启用以后,Tiny Tiny RSS 将可从网页服务器的 /tt-rss 路" "径访问。" -#: plinth/modules/ttrss/__init__.py:56 +#: plinth/modules/ttrss/__init__.py:58 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:63 +#: plinth/modules/ttrss/__init__.py:65 msgid "Read and subscribe to news feeds" msgstr "" @@ -5721,7 +5854,7 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:101 +#: plinth/modules/upgrades/__init__.py:35 plinth/templates/setup.html:89 msgid "Update" msgstr "更新" @@ -5802,18 +5935,18 @@ msgstr "升级过程开始。" msgid "Starting upgrade failed." msgstr "开始升级失败。" -#: plinth/modules/users/__init__.py:47 +#: plinth/modules/users/__init__.py:48 msgid "Users and Groups" msgstr "用户和组" -#: plinth/modules/users/__init__.py:50 +#: plinth/modules/users/__init__.py:51 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:55 +#: plinth/modules/users/__init__.py:56 #, python-brace-format msgid "" "Any user may login to {box_name} web interface to see a list of apps " @@ -5821,7 +5954,7 @@ msgid "" "group may alter apps or system settings." msgstr "" -#: plinth/modules/users/__init__.py:123 +#: plinth/modules/users/__init__.py:125 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "请检查 LDAP 条目“{search_item}”" @@ -5830,17 +5963,17 @@ msgstr "请检查 LDAP 条目“{search_item}”" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/forms.py:57 +#: plinth/modules/users/forms.py:55 msgid "Username is taken or is reserved." msgstr "用户名已经占用或保留。" -#: plinth/modules/users/forms.py:88 plinth/modules/users/forms.py:197 +#: plinth/modules/users/forms.py:87 plinth/modules/users/forms.py:194 #, fuzzy #| msgid "Transmission BitTorrent" msgid "Permissions" msgstr "Transmission BitTorrent" -#: plinth/modules/users/forms.py:91 +#: plinth/modules/users/forms.py:90 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5852,20 +5985,20 @@ msgstr "" "支持单一登录的服务。

管理员(admin)组中的用户将能够登录所有服务。他" "们还可以通过 SSH 登录到系统并具有管理权限(sudo)。" -#: plinth/modules/users/forms.py:126 plinth/modules/users/forms.py:331 +#: plinth/modules/users/forms.py:125 plinth/modules/users/forms.py:325 msgid "Creating LDAP user failed." msgstr "创建 LDAP 用户失败。" -#: plinth/modules/users/forms.py:137 +#: plinth/modules/users/forms.py:136 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "未能将新用户添加到 {group}。" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:154 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -5874,39 +6007,39 @@ msgstr "" "设置 SSH 公钥将允许此用户安全地登录到系统不使用密码。您可以输入多个密钥,每行" "一个。将忽略空行和以 # 开头的行。" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:231 msgid "Renaming LDAP user failed." msgstr "重命名 LDAP 用户失败。" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:243 msgid "Failed to remove user from group." msgstr "无法从组中删除用户。" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:254 msgid "Failed to add user to group." msgstr "无法将用户添加到组。" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:263 msgid "Unable to set SSH keys." msgstr "不能设置 SSH 密钥。" -#: plinth/modules/users/forms.py:274 +#: plinth/modules/users/forms.py:271 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:306 +#: plinth/modules/users/forms.py:301 msgid "Changing LDAP user password failed." msgstr "更改 LDAP 用户密码失败。" -#: plinth/modules/users/forms.py:340 +#: plinth/modules/users/forms.py:334 msgid "Failed to add new user to admin group." msgstr "未能将新用户添加到管理员组。" -#: plinth/modules/users/forms.py:357 +#: plinth/modules/users/forms.py:351 msgid "Failed to restrict console access." msgstr "限制命令行访问失败。" -#: plinth/modules/users/forms.py:369 +#: plinth/modules/users/forms.py:363 msgid "User account created, you are now logged in" msgstr "用户帐户已创建,您现在可以登录" @@ -5922,12 +6055,12 @@ msgstr "保存密码" #: plinth/modules/users/templates/users_create.html:32 #: plinth/modules/users/templates/users_list.html:42 #: plinth/modules/users/templates/users_list.html:44 -#: plinth/modules/users/views.py:58 +#: plinth/modules/users/views.py:57 msgid "Create User" msgstr "创建用户" #: plinth/modules/users/templates/users_delete.html:26 -#: plinth/modules/users/views.py:141 +#: plinth/modules/users/views.py:140 msgid "Delete User" msgstr "删除用户" @@ -5959,7 +6092,7 @@ msgid "Create Account" msgstr "创建帐户" #: plinth/modules/users/templates/users_list.html:38 -#: plinth/modules/users/views.py:75 +#: plinth/modules/users/views.py:74 msgid "Users" msgstr "用户" @@ -5985,62 +6118,62 @@ msgstr "使用 更改密码窗口 更改 msgid "Save Changes" msgstr "保存更改" -#: plinth/modules/users/views.py:56 +#: plinth/modules/users/views.py:55 #, python-format msgid "User %(username)s created." msgstr "用户 %(username)s 已创建。" -#: plinth/modules/users/views.py:95 +#: plinth/modules/users/views.py:94 #, python-format msgid "User %(username)s updated." msgstr "用户 %(username)s 已更新。" -#: plinth/modules/users/views.py:96 +#: plinth/modules/users/views.py:95 msgid "Edit User" msgstr "编辑用户" -#: plinth/modules/users/views.py:151 +#: plinth/modules/users/views.py:150 #, python-brace-format msgid "User {user} deleted." msgstr "用户 {user} 已删除。" -#: plinth/modules/users/views.py:158 +#: plinth/modules/users/views.py:157 msgid "Deleting LDAP user failed." msgstr "删除 LDAP 用户失败。" -#: plinth/modules/users/views.py:167 +#: plinth/modules/users/views.py:166 msgid "Change Password" msgstr "更改密码" -#: plinth/modules/users/views.py:168 +#: plinth/modules/users/views.py:167 msgid "Password changed successfully." msgstr "已成功更改密码。" -#: plinth/network.py:38 +#: plinth/network.py:37 msgid "PPPoE" msgstr "PPPoE" -#: plinth/network.py:39 +#: plinth/network.py:38 msgid "Generic" msgstr "通用" -#: plinth/package.py:139 +#: plinth/package.py:137 msgid "Error during installation" msgstr "安装时错误" -#: plinth/package.py:161 +#: plinth/package.py:159 msgid "installing" msgstr "安装" -#: plinth/package.py:163 +#: plinth/package.py:161 msgid "downloading" msgstr "下载中" -#: plinth/package.py:165 +#: plinth/package.py:163 msgid "media change" msgstr "媒体改变" -#: plinth/package.py:167 +#: plinth/package.py:165 #, python-brace-format msgid "configuration file: {file}" msgstr "配置文件:{file}" @@ -6098,13 +6231,13 @@ msgstr "" "com/freedombox/Plinth/issues\"> bug 追踪器 上这样我们就可以修复该错误。同" "时请附加状态日志到 Bug 报告里。" -#: plinth/templates/app.html:75 +#: plinth/templates/app.html:47 #, fuzzy, python-format #| msgid "Service discovery server is running" msgid "Service %(service_name)s is running." msgstr "服务发现服务正在运行" -#: plinth/templates/app.html:80 +#: plinth/templates/app.html:52 #, fuzzy, python-format #| msgid "Service discovery server is not running" msgid "Service %(service_name)s is not running." @@ -6236,6 +6369,10 @@ msgid "" "your %(box_name)s once it is done." msgstr "" +#: plinth/templates/header.html:36 +msgid "Installation" +msgstr "安装" + #: plinth/templates/index.html:37 #, python-format msgid "" @@ -6329,46 +6466,42 @@ msgid "" "%(service_name)s:" msgstr "" -#: plinth/templates/setup.html:39 -msgid "Installation" -msgstr "安装" - -#: plinth/templates/setup.html:63 +#: plinth/templates/setup.html:51 msgid "Install this application?" msgstr "安装此应用程序?" -#: plinth/templates/setup.html:67 +#: plinth/templates/setup.html:55 msgid "This application needs an update. Update now?" msgstr "此应用程序需要一次更新。立即更新?" -#: plinth/templates/setup.html:78 +#: plinth/templates/setup.html:66 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -#: plinth/templates/setup.html:85 +#: plinth/templates/setup.html:73 msgid "This application is currently not available in your distribution." msgstr "这项应用现在在你不中无法使用" -#: plinth/templates/setup.html:99 +#: plinth/templates/setup.html:87 msgid "Install" msgstr "安装" -#: plinth/templates/setup.html:110 +#: plinth/templates/setup.html:98 msgid "Performing pre-install operation" msgstr "执行安装前操作" -#: plinth/templates/setup.html:114 +#: plinth/templates/setup.html:102 msgid "Performing post-install operation" msgstr "执行安装后操作" -#: plinth/templates/setup.html:119 +#: plinth/templates/setup.html:107 #, python-format msgid "Installing %(package_names)s: %(status)s" msgstr "正在安装 %(package_names)s:%(status)s" -#: plinth/templates/setup.html:129 +#: plinth/templates/setup.html:117 #, python-format msgid "%(percentage)s%% complete" msgstr "已完成 %(percentage)s%%" @@ -6383,18 +6516,26 @@ msgstr "启动 web 客户端" msgid "Client Apps" msgstr "Quassel IRC 客户端" -#: plinth/views.py:180 +#: plinth/views.py:181 msgid "Application enabled" msgstr "应用程序已启用" -#: plinth/views.py:183 +#: plinth/views.py:184 msgid "Application disabled" msgstr "应用程序已禁用" -#: plinth/web_framework.py:189 +#: plinth/web_framework.py:188 msgid "Gujarati" msgstr "古吉拉特语" +#~ msgid "" +#~ "Directory where downloads are saved. If you change the default " +#~ "directory, ensure that the new directory exists and is writable by " +#~ "\"debian-transmission\" user." +#~ msgstr "" +#~ "保存下载的目录。 如果您更改默认目录,请确保新目录存在并且允许用户“debian-" +#~ "transmission”可写。" + #~ msgid "OpenVPN server is running" #~ msgstr "OpenVPN 服务正在运行" @@ -7111,9 +7252,6 @@ msgstr "古吉拉特语" #~ msgid "Generated PGP key." #~ msgstr "已生成的 PGP 密钥。" -#~ msgid "Mumble Voice Chat Server" -#~ msgstr "Mumble 语音聊天服务器" - #~ msgid "Enable Mumble daemon" #~ msgstr "启用 Mumble 守护进程" From 5a1785c806d9daae149fe538fb6c5d01634b5e95 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 16 Dec 2019 18:38:18 -0500 Subject: [PATCH 41/42] doc: Fetch latest manual Signed-off-by: James Valleroy --- doc/manual/en/GitWeb.raw.xml | 5 ++ doc/manual/en/freedombox-manual.raw.xml | 66 +++++++++++++++++++++++++ doc/manual/es/freedombox-manual.raw.xml | 32 ++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 doc/manual/en/GitWeb.raw.xml diff --git a/doc/manual/en/GitWeb.raw.xml b/doc/manual/en/GitWeb.raw.xml new file mode 100644 index 000000000..b489a528a --- /dev/null +++ b/doc/manual/en/GitWeb.raw.xml @@ -0,0 +1,5 @@ + + +
FreedomBox/Manual/GitWeb42019-12-16 23:25:10JamesValleroyadd standard manual page footer32019-12-15 19:38:46DrahtseilCopied description from plinth, managing, access22019-12-14 13:44:36JosephNuthalapatiAdd section: HTTP basic auth12019-12-14 13:14:15JosephNuthalapatiCreate GitWeb page with a stub.
Simple Git Hosting (GitWeb)Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. To learn more on how to use Git visit Git tutorial. Available since version: 19.19
Managing the repositoriesAfter installation of GitWeb, a new repository can be created. It can be marked as private to limit access.
AccessGitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb
HTTP basic authGitWeb on FreedomBox currently supports HTTP remotes only. To avoid having to enter the password each time you pull/push to the repository, you can edit your remote to include the credentials. Example: Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. Note: If using this method, your password will be stored in plain text in the local repository's .git/config file.
MirroringThough your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, December 14th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/freedombox-manual.raw.xml b/doc/manual/en/freedombox-manual.raw.xml index f6f010955..987a87729 100644 --- a/doc/manual/en/freedombox-manual.raw.xml +++ b/doc/manual/en/freedombox-manual.raw.xml @@ -4,6 +4,12 @@ FreedomBox/Manual + + 78 + 2019-12-15 19:26:31 + Drahtseil + Added Gitweb (to the end of the manual, but I have no clue how this is sorted) + 77 2019-04-30 00:45:49 @@ -3113,6 +3119,34 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
+
+ Simple Git Hosting (GitWeb) + Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. + To learn more on how to use Git visit Git tutorial. + Available since version: 19.19 +
+ Managing the repositories + After installation of GitWeb, a new repository can be created. It can be marked as private to limit access. +
+
+ Access + GitWeb can be accessed after installation e.g. by the web client through freedombox name>/gitweb +
+
+ HTTP basic auth + GitWeb on FreedomBox currently supports HTTP remotes only. To avoid having to enter the password each time you pull/push to the repository, you can edit your remote to include the credentials. + + Example: + + + Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. + Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. +
+
+ Mirroring + Though your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. +
+
System @@ -9956,6 +9990,38 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
Release Notes The following are the release notes for each FreedomBox version. +
+ FreedomBox 19.23 (2019-12-16) + + + minidlna: New app for MiniDLNA (Simple Media Server) + + + apps: Show app icons in app pages + + + apps: Implement responsive layout for app pages + + + samba: Recursively set open share directory permissions + + + transmission: Add directory selection form + + + mumble: Add option to set SuperUser password + + + cockpit: Extend apps description with access info + + + cockpit: Add list of valid urls to access the app + + + Update translations for French, German, Spanish, Portuguese, and Swedish + + +
FreedomBox 19.22 (2019-12-02) diff --git a/doc/manual/es/freedombox-manual.raw.xml b/doc/manual/es/freedombox-manual.raw.xml index 407d58513..8940a8c34 100644 --- a/doc/manual/es/freedombox-manual.raw.xml +++ b/doc/manual/es/freedombox-manual.raw.xml @@ -9806,6 +9806,38 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
Release Notes The following are the release notes for each FreedomBox version. +
+ FreedomBox 19.23 (2019-12-16) + + + minidlna: New app for MiniDLNA (Simple Media Server) + + + apps: Show app icons in app pages + + + apps: Implement responsive layout for app pages + + + samba: Recursively set open share directory permissions + + + transmission: Add directory selection form + + + mumble: Add option to set SuperUser password + + + cockpit: Extend apps description with access info + + + cockpit: Add list of valid urls to access the app + + + Update translations for French, German, Spanish, Portuguese, and Swedish + + +
FreedomBox 19.22 (2019-12-02) From ada1967755a804a292050a0eaffadd3dc217cf1e Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 16 Dec 2019 18:39:08 -0500 Subject: [PATCH 42/42] Release v19.23 to unstable Signed-off-by: James Valleroy --- debian/changelog | 65 ++++++++++++++++++++++++++++++++++++++++++++++ plinth/__init__.py | 2 +- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index e259adaae..1bf2830c8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,68 @@ +plinth (19.23) unstable; urgency=medium + + [ Thomas Vincent ] + * Translated using Weblate (French) + * Translated using Weblate (French) + + [ Fred ] + * Translated using Weblate (French) + + [ Alice Kile ] + * show app icons in apps page + * use single variable for referencing icon filename + * fix formatting issues + * fix formatting and template-related issues + * properly implement header in app and setup pages + * implement responsive layout for app page + * fix toggle button html layout and responsive design css + * config: fix minor syntax error + * fix: implement requested changes + + [ James Valleroy ] + * themes: css whitespace minor fixes + * samba: Add icon to app page + * minidlna: Add managed service and Daemon component + * minidlna: Use single action to set media dir and restart + * minidlna: Show icon on app page + * minidlna: Fix webserver config name + * minidlna: Only show shortcut to users in group + * mumble: Keep icon_filename in moved view + * cockpit: Filter out localhost URLs from displayed access list + * users: Use service action to restart share group service + * locale: Update translation strings + * doc: Fetch latest manual + + [ Veiko Aasa ] + * samba: recursively set open share directory permissions + * users: Fix functional tests changing the language feature + * app: Fix app checkbox status change functional tests + * storage: Directory selection form and validator + * transmission: New directory selection form + + [ Nektarios Katakis ] + * feature: minidlna app + * fix: minidlna.conf file permissions after editing + * update minidlna svg + * run sysctl after installation + * mumble: Add option to set SuperUser password + * cockpit: extend apps description with access info + * cockpit: add list of valid urls to access the app. + + [ /rgb ] + * Translated using Weblate (German) + * Translated using Weblate (German) + + [ Luis A. Arizmendi ] + * Translated using Weblate (Spanish) + + [ adaragao ] + * Translated using Weblate (Portuguese) + + [ Michael Breidenbach ] + * Translated using Weblate (Swedish) + + -- James Valleroy Mon, 16 Dec 2019 18:38:46 -0500 + plinth (19.22) unstable; urgency=medium [ Matt Conroy ] diff --git a/plinth/__init__.py b/plinth/__init__.py index d58f4b90a..3660ce13f 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -18,4 +18,4 @@ Package init file. """ -__version__ = '19.22' +__version__ = '19.23'