From 1c2796b5719952b62845287c470d59a2d0e4ae05 Mon Sep 17 00:00:00 2001 From: ikmaak Date: Tue, 18 Jan 2022 09:26:14 +0000 Subject: [PATCH 01/35] Translated using Weblate (German) Currently translated at 100.0% (1447 of 1447 strings) --- plinth/locale/de/LC_MESSAGES/django.po | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index a4bb03412..ef04ebe81 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: 2022-01-11 19:11-0500\n" -"PO-Revision-Date: 2022-01-13 18:58+0000\n" -"Last-Translator: nautilusx \n" +"PO-Revision-Date: 2022-01-19 09:56+0000\n" +"Last-Translator: ikmaak \n" "Language-Team: German \n" "Language: de\n" @@ -19,7 +19,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 4.10.1\n" +"X-Generator: Weblate 4.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -3703,11 +3703,6 @@ msgstr "" "Verschlüsselung und geringer Latenz." #: plinth/modules/mumble/__init__.py:28 -#, fuzzy -#| 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." msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " @@ -3715,7 +3710,7 @@ msgid "" msgstr "" "Sie können sich mit Ihrem Mumble-Server auf dem regulären Mumble-Port 64738 " "verbinden. Auf Mumble finden Sie " -"Anwendungen, um sich vom Desktop oder Android-Gerät mit Mumble zu verbinden." +"Anwendungen, um sich vom Desktop oder Mobil-Gerät mit Mumble zu verbinden." #: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" @@ -7724,9 +7719,6 @@ msgstr "" "senden" #: plinth/modules/wireguard/forms.py:107 -#, fuzzy -#| msgid "" -#| "Typically checked for a VPN service though which all traffic is sent." msgid "Typically checked for a VPN service through which all traffic is sent." msgstr "" "In der Regel auf einem VPN-Dienst überprüft, über den der gesamte " From d355f727c3e4e1fdf7d31f00ab6e61459160d06d Mon Sep 17 00:00:00 2001 From: ikmaak Date: Tue, 18 Jan 2022 09:21:57 +0000 Subject: [PATCH 02/35] Translated using Weblate (Dutch) Currently translated at 100.0% (1447 of 1447 strings) --- plinth/locale/nl/LC_MESSAGES/django.po | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 0a129ad8c..52837f808 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-11 19:11-0500\n" -"PO-Revision-Date: 2022-01-13 18:58+0000\n" +"PO-Revision-Date: 2022-01-19 09:56+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch \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 4.10.1\n" +"X-Generator: Weblate 4.11-dev\n" "X-Language: nl_NL\n" "X-Source-Language: C\n" @@ -7903,6 +7903,9 @@ msgid "" "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" +"Na een grote versie-upgrade moet u de database-upgrade handmatig uitvoeren " +"vanuit de beheerdersinterface. Extra plug-ins of thema's kunnen op eigen " +"risico worden geïnstalleerd en geüpgraded." #: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 @@ -7922,6 +7925,9 @@ msgid "" "Allow all visitors. Disabling allows only administrators to view the " "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" +"Laat alle bezoekers toe. Als dit is uitschakeld, kunnen alleen beheerders de " +"WordPress-site of blog bekijken. Alleen inschakelen na het uitvoeren van de " +"eerste WordPress-configuratie." #: plinth/modules/zoph/__init__.py:26 #, python-brace-format From 44bff730f3d8272c3f4707dc98fbe2320675e480 Mon Sep 17 00:00:00 2001 From: Benedek Nagy Date: Sun, 16 Jan 2022 19:14:43 +0000 Subject: [PATCH 03/35] shaarli: Add android app to description [sunil: Fix typo, indentation and add module comment] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/shaarli/manifest.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/plinth/modules/shaarli/manifest.py b/plinth/modules/shaarli/manifest.py index b5f815796..a1c758ea0 100644 --- a/plinth/modules/shaarli/manifest.py +++ b/plinth/modules/shaarli/manifest.py @@ -1,11 +1,30 @@ # SPDX-License-Identifier: AGPL-3.0-or-later +""" +Application manifest for bind. +""" from django.utils.translation import gettext_lazy as _ +from plinth.clients import store_url + clients = [{ + 'name': + _('Shaarlier'), + 'platforms': [{ + 'type': 'store', + 'os': 'android', + 'store_name': 'google-play', + 'url': store_url('google-play', 'com.dimtion.shaarlier'), + }, { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', 'com.dimtion.shaarlier'), + }] +}, { 'name': _('Shaarli'), 'platforms': [{ 'type': 'web', - 'url': '/shaarli' + 'url': '/shaarli/' }] }] From e7399a4d8e456557a261092fac3da7deabd4ca84 Mon Sep 17 00:00:00 2001 From: Benedek Nagy Date: Sat, 15 Jan 2022 23:49:50 +0000 Subject: [PATCH 04/35] apache: Don't redirect to HTTPS for .onion domains Tests: - Without the patch, run torsocks curl -kv http://DOMAIN.onion. Observe that redirection to https happens. - Without the patch, run curl -kv http://localhost. Observe that redirection to https happens. - With the patch, run torsocks curl -kv http://DOMAIN.onion. Observe that redirection to https does not happen. - With the patch, run curl -kv http://localhost. Observe that redirection to https happens. [sunil: Perform case insensitive match] [sunil: Remove capture of domain name match] [sunil: Strictly check that domain ends with .onion] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa Tested-by: Sunil Mohan Adapa --- data/etc/apache2/sites-available/plinth-ssl.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data/etc/apache2/sites-available/plinth-ssl.conf b/data/etc/apache2/sites-available/plinth-ssl.conf index a7831936c..202e1bf1b 100644 --- a/data/etc/apache2/sites-available/plinth-ssl.conf +++ b/data/etc/apache2/sites-available/plinth-ssl.conf @@ -10,6 +10,9 @@ ## RewriteEngine on + # Don't redirect for onion sites as it is not needed and leads to + # unnecessary warning. + RewriteCond %{HTTP_HOST} !^.*\.onion$ [NC] ReWriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] From 668da20a02f1a018d4f416160f03cdbdbb466214 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 18 Jan 2022 14:34:19 -0800 Subject: [PATCH 05/35] mldonkey: Drop app not available in Debian Bullseye and Bookworm Closes: #2157. Original author of the app J. Carlos Romero has been contacted to see if there is interest in continuing to maintain the app. There has been no response. Since the app is not available even in the current stable (Bullseye), few users are presumably using it on a supported FreedomBox distribution. Any users are advised to maintain the manually instead of relying on FreedomBox for it. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/mldonkey | 40 - debian/copyright | 1 - debian/freedombox.maintscript | 1 + plinth/modules/help/tests/test_views.py | 4 +- plinth/modules/mldonkey/__init__.py | 107 --- .../conf-available/mldonkey-freedombox.conf | 21 - .../data/etc/plinth/modules-enabled/mldonkey | 1 - .../mldonkey-server.service.d/freedombox.conf | 35 - plinth/modules/mldonkey/manifest.py | 57 -- plinth/modules/mldonkey/tests/__init__.py | 0 .../modules/mldonkey/tests/test_functional.py | 73 -- plinth/modules/mldonkey/urls.py | 13 - pyproject.toml | 1 - setup.py | 1 + static/themes/default/icons/mldonkey.png | Bin 33782 -> 0 bytes static/themes/default/icons/mldonkey.svg | 812 ------------------ 16 files changed, 4 insertions(+), 1163 deletions(-) delete mode 100755 actions/mldonkey delete mode 100644 plinth/modules/mldonkey/__init__.py delete mode 100644 plinth/modules/mldonkey/data/etc/apache2/conf-available/mldonkey-freedombox.conf delete mode 100644 plinth/modules/mldonkey/data/etc/plinth/modules-enabled/mldonkey delete mode 100644 plinth/modules/mldonkey/data/usr/lib/systemd/system/mldonkey-server.service.d/freedombox.conf delete mode 100644 plinth/modules/mldonkey/manifest.py delete mode 100644 plinth/modules/mldonkey/tests/__init__.py delete mode 100644 plinth/modules/mldonkey/tests/test_functional.py delete mode 100644 plinth/modules/mldonkey/urls.py delete mode 100644 static/themes/default/icons/mldonkey.png delete mode 100644 static/themes/default/icons/mldonkey.svg diff --git a/actions/mldonkey b/actions/mldonkey deleted file mode 100755 index f9156fb43..000000000 --- a/actions/mldonkey +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/python3 -# -*- mode: python -*- -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Configuration helper for mldonkey. -""" - -import argparse - -from plinth import action_utils - - -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('pre-install', help='Perform pre-install operations') - - subparsers.required = True - return parser.parse_args() - - -def subcommand_pre_install(_): - """Preseed debconf values before packages are installed.""" - action_utils.debconf_set_selections( - ['mldonkey-server mldonkey-server/launch_at_startup boolean true']) - - -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/debian/copyright b/debian/copyright index af2e62b80..cf2a8d8b0 100644 --- a/debian/copyright +++ b/debian/copyright @@ -7,7 +7,6 @@ License: AGPL-3+ Files: static/themes/default/icons/jsxc.png static/themes/default/icons/jsxc.svg - static/themes/default/icons/mldonkey.svg Copyright: 2011-2019 FreedomBox Authors License: AGPL-3+ diff --git a/debian/freedombox.maintscript b/debian/freedombox.maintscript index 128d02ff6..f299b3cf9 100644 --- a/debian/freedombox.maintscript +++ b/debian/freedombox.maintscript @@ -16,3 +16,4 @@ rm_conffile /etc/plinth/modules-enabled/coquelicot 20.14~ rm_conffile /etc/plinth/modules-enabled/diaspora 21.16~ rm_conffile /etc/plinth/modules-enabled/monkeysphere 21.16~ rm_conffile /etc/plinth/modules-enabled/tahoe 21.16~ +rm_conffile /etc/plinth/modules-enabled/mldonkey 22.4~ diff --git a/plinth/modules/help/tests/test_views.py b/plinth/modules/help/tests/test_views.py index 331ab07d9..dc8b86354 100644 --- a/plinth/modules/help/tests/test_views.py +++ b/plinth/modules/help/tests/test_views.py @@ -109,8 +109,8 @@ MANUAL_PAGES = ('Apache_userdir', 'APU', 'Backups', 'BananaPro', 'BeagleBone', 'freedombox-manual', 'GettingHelp', 'GitWeb', 'Hardware', 'I2P', 'Ikiwiki', 'Infinoted', 'Introduction', 'JSXC', 'LetsEncrypt', 'Maker', 'MatrixSynapse', 'MediaWiki', - 'Minetest', 'MiniDLNA', 'MLDonkey', 'Mumble', 'NameServices', - 'Networks', 'OpenVPN', 'OrangePiZero', 'PageKite', 'pcDuino3', + 'Minetest', 'MiniDLNA', 'Mumble', 'NameServices', 'Networks', + 'OpenVPN', 'OrangePiZero', 'PageKite', 'pcDuino3', 'Performance', 'PineA64+', 'PioneerEdition', 'Plinth', 'Power', 'Privoxy', 'Quassel', 'QuickStart', 'Radicale', 'RaspberryPi2', 'RaspberryPi3B+', 'RaspberryPi3B', 'RaspberryPi4B', diff --git a/plinth/modules/mldonkey/__init__.py b/plinth/modules/mldonkey/__init__.py deleted file mode 100644 index 56801ed32..000000000 --- a/plinth/modules/mldonkey/__init__.py +++ /dev/null @@ -1,107 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -FreedomBox app for mldonkey. -""" - -from django.utils.translation import gettext_lazy as _ - -from plinth import actions -from plinth import app as app_module -from plinth import cfg, frontpage, menu -from plinth.daemon import Daemon -from plinth.modules.apache.components import Webserver -from plinth.modules.backups.components import BackupRestore -from plinth.modules.firewall.components import Firewall -from plinth.modules.users import add_user_to_share_group -from plinth.modules.users.components import UsersAndGroups -from plinth.package import Packages -from plinth.utils import format_lazy - -from . import manifest - -_description = [ - _('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.'), - _('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.'), - format_lazy( - _('On {box_name}, downloaded files can be found in /var/lib/mldonkey/ ' - 'directory.'), box_name=cfg.box_name) -] - -_SYSTEM_USER = 'mldonkey' - -app = None - - -class MLDonkeyApp(app_module.App): - """FreedomBox app for MLDonkey.""" - - app_id = 'mldonkey' - - _version = 2 - - DAEMON = 'mldonkey-server' - - def __init__(self): - """Create components for the app.""" - super().__init__() - - groups = {'ed2k': _('Download files using eDonkey applications')} - - info = app_module.Info( - app_id=self.app_id, version=self._version, name=_('MLDonkey'), - icon_filename='mldonkey', - short_description=_('Peer-to-peer File Sharing'), - description=_description, manual_page='MLDonkey', - clients=manifest.clients) - self.add(info) - - menu_item = menu.Menu('menu-mldonkey', info.name, - info.short_description, info.icon_filename, - 'mldonkey:index', parent_url_name='apps') - self.add(menu_item) - - shortcuts = frontpage.Shortcut( - 'shortcut-mldonkey', info.name, - short_description=info.short_description, icon=info.icon_filename, - url='/mldonkey/', login_required=True, clients=info.clients, - allowed_groups=list(groups)) - self.add(shortcuts) - - packages = Packages('packages-mldonkey', ['mldonkey-server']) - self.add(packages) - - firewall = Firewall('firewall-mldonkey', info.name, - ports=['http', 'https'], is_external=True) - self.add(firewall) - - webserver = Webserver('webserver-mldonkey', 'mldonkey-freedombox', - urls=['https://{host}/mldonkey/']) - self.add(webserver) - - daemon = Daemon('daemon-mldonkey', self.DAEMON, - listen_ports=[(4080, 'tcp4')]) - self.add(daemon) - - users_and_groups = UsersAndGroups('users-and-groups-mldonkey', - reserved_usernames=[_SYSTEM_USER], - groups=groups) - self.add(users_and_groups) - - backup_restore = BackupRestore('backup-restore-mldonkey', - **manifest.backup) - self.add(backup_restore) - - -def setup(helper, old_version=None): - """Install and configure the module.""" - helper.call('pre', actions.superuser_run, 'mldonkey', ['pre-install']) - app.setup(old_version) - if not old_version: - helper.call('post', app.enable) - - add_user_to_share_group(_SYSTEM_USER, MLDonkeyApp.DAEMON) diff --git a/plinth/modules/mldonkey/data/etc/apache2/conf-available/mldonkey-freedombox.conf b/plinth/modules/mldonkey/data/etc/apache2/conf-available/mldonkey-freedombox.conf deleted file mode 100644 index 263c1361f..000000000 --- a/plinth/modules/mldonkey/data/etc/apache2/conf-available/mldonkey-freedombox.conf +++ /dev/null @@ -1,21 +0,0 @@ -## -## On all sites, provide mldonkey web interface on a path: /mldonkey -## - -# Redirect /mldonkey to /mldonkey/ as the MLdonkey server web interface does not -# work without a slash at the end. - - - RewriteEngine On - RewriteCond %{REQUEST_URI} ^/mldonkey$ - RewriteRule .* /mldonkey/ [R=301,L] - - - - - Include includes/freedombox-single-sign-on.conf - ProxyPass http://localhost:4080/ - - TKTAuthToken "admin" "ed2k" - - diff --git a/plinth/modules/mldonkey/data/etc/plinth/modules-enabled/mldonkey b/plinth/modules/mldonkey/data/etc/plinth/modules-enabled/mldonkey deleted file mode 100644 index 71bd026a0..000000000 --- a/plinth/modules/mldonkey/data/etc/plinth/modules-enabled/mldonkey +++ /dev/null @@ -1 +0,0 @@ -plinth.modules.mldonkey diff --git a/plinth/modules/mldonkey/data/usr/lib/systemd/system/mldonkey-server.service.d/freedombox.conf b/plinth/modules/mldonkey/data/usr/lib/systemd/system/mldonkey-server.service.d/freedombox.conf deleted file mode 100644 index d0256a633..000000000 --- a/plinth/modules/mldonkey/data/usr/lib/systemd/system/mldonkey-server.service.d/freedombox.conf +++ /dev/null @@ -1,35 +0,0 @@ -[Unit] -Description=MLDonkey: Multi-protocol, peer-to-peer file sharing server -After=syslog.target network.target nslcd.service -ConditionPathExists=/var/lib/mldonkey/downloads.ini -Documentation=man:mlnet(1) http://mldonkey.sourceforge.net/Main_Page - -[Service] -ExecStart= -ExecStart=/usr/bin/mlnet -ExecStop= -Group=mldonkey -IgnoreSIGPIPE=yes -KillMode=control-group -LockPersonality=yes -NoNewPrivileges=yes -PrivateDevices=yes -PrivateMounts=yes -PrivateTmp=yes -ProtectControlGroups=yes -ProtectHome=yes -ProtectKernelLogs=yes -ProtectKernelModules=yes -ProtectKernelTunables=yes -ProtectSystem=full -RemainAfterExit=no -RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 -RestrictRealtime=yes -StateDirectory=mldonkey -SystemCallArchitectures=native -Type=simple -User=mldonkey -WorkingDirectory=/var/lib/mldonkey - -[Install] -WantedBy=multi-user.target diff --git a/plinth/modules/mldonkey/manifest.py b/plinth/modules/mldonkey/manifest.py deleted file mode 100644 index 25819b496..000000000 --- a/plinth/modules/mldonkey/manifest.py +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Application manifest for mldonkey. -""" - -from django.utils.translation import gettext_lazy as _ - -from plinth.clients import store_url - -clients = [{ - 'name': _('MLDonkey'), - 'platforms': [{ - 'type': 'web', - 'url': '/mldonkey/' - }] -}, { - 'name': - _('KMLDonkey'), - 'platforms': [{ - 'type': 'download', - 'os': 'gnu-linux', - 'url': 'https://www.kde.org/applications/internet/kmldonkey/' - }, { - 'type': 'package', - 'format': 'deb', - 'name': 'kmldonkey', - }] -}, { - 'name': - _('AMLDonkey'), - 'platforms': [{ - 'type': 'store', - 'os': 'android', - 'store_name': 'google-play', - 'url': store_url('google-play', 'com.devwom.amldonkey'), - }] -}] - -backup = { - 'config': { - 'files': [ - '/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/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/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' - ] - }, - 'services': ['mldonkey-server'] -} diff --git a/plinth/modules/mldonkey/tests/__init__.py b/plinth/modules/mldonkey/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/plinth/modules/mldonkey/tests/test_functional.py b/plinth/modules/mldonkey/tests/test_functional.py deleted file mode 100644 index ebd25118d..000000000 --- a/plinth/modules/mldonkey/tests/test_functional.py +++ /dev/null @@ -1,73 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Functional, browser based tests for mldonkey app. -""" - -import pytest -from plinth.tests import functional - -pytestmark = [ - pytest.mark.apps, pytest.mark.mldonkey, pytest.mark.sso, pytest.mark.skip -] - - -class TestMldonkeyApp(functional.BaseAppTests): - app_name = 'mldonkey' - has_service = True - has_web = True - - def test_upload(self, session_browser): - """Test uploading an ed2k file to mldonkey.""" - functional.app_enable(session_browser, 'mldonkey') - _remove_all_ed2k_files(session_browser) - _upload_sample_ed2k_file(session_browser) - assert _get_number_of_ed2k_files(session_browser) == 1 - - def test_backup_restore(self, session_browser): - """Test backup and restore of ed2k files.""" - functional.app_enable(session_browser, 'mldonkey') - _remove_all_ed2k_files(session_browser) - _upload_sample_ed2k_file(session_browser) - functional.backup_create(session_browser, 'mldonkey', 'test_mldonkey') - - _remove_all_ed2k_files(session_browser) - functional.backup_restore(session_browser, 'mldonkey', 'test_mldonkey') - - assert functional.service_is_running(session_browser, 'mldonkey') - assert _get_number_of_ed2k_files(session_browser) == 1 - - -def _submit_command(browser, command): - """Submit a command to mldonkey.""" - with browser.get_iframe('commands') as commands_frame: - commands_frame.find_by_css('.txt2').fill(command) - commands_frame.find_by_css('.but2').click() - - -def _remove_all_ed2k_files(browser): - """Remove all ed2k files from mldonkey.""" - functional.visit(browser, '/mldonkey/') - _submit_command(browser, 'cancel all') - _submit_command(browser, 'confirm yes') - - -def _upload_sample_ed2k_file(browser): - """Upload a sample ed2k file into mldonkey.""" - functional.visit(browser, '/mldonkey/') - dllink_command = 'dllink ed2k://|file|foo.bar|123|' \ - '0123456789ABCDEF0123456789ABCDEF|/' - _submit_command(browser, dllink_command) - - -def _get_number_of_ed2k_files(browser): - """Return the number of ed2k files currently in mldonkey.""" - functional.visit(browser, '/mldonkey/') - - with browser.get_iframe('commands') as commands_frame: - commands_frame.find_by_xpath( - '//tr//td[contains(text(), "Transfers")]').click() - - with browser.get_iframe('output') as output_frame: - functional.eventually(output_frame.find_by_css, ['.downloaded']) - return len(output_frame.find_by_css('.dl-1')) + len( - output_frame.find_by_css('.dl-2')) diff --git a/plinth/modules/mldonkey/urls.py b/plinth/modules/mldonkey/urls.py deleted file mode 100644 index f96e85994..000000000 --- a/plinth/modules/mldonkey/urls.py +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -URLs for the mldonkey module. -""" - -from django.urls import re_path - -from plinth.views import AppView - -urlpatterns = [ - re_path(r'^apps/mldonkey/$', AppView.as_view(app_id='mldonkey'), - name='index') -] diff --git a/pyproject.toml b/pyproject.toml index cd2800bfb..5e46e2701 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,6 @@ markers = [ "mediawiki", "minetest", "minidlna", - "mldonkey", "mumble", "openvpn", "pagekite", diff --git a/setup.py b/setup.py index 936690c98..093a046b1 100755 --- a/setup.py +++ b/setup.py @@ -48,6 +48,7 @@ DISABLED_APPS_TO_REMOVE = [ 'restore', 'repro', 'tahoe', + 'mldonkey', ] REMOVED_FILES = [ diff --git a/static/themes/default/icons/mldonkey.png b/static/themes/default/icons/mldonkey.png deleted file mode 100644 index 32bf32ce06b28c065e690ffc134072f19517543e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33782 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 - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From f9c1e09932a0f8cde90f6208a5745f0291a42a47 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 22 Dec 2021 19:01:46 -0800 Subject: [PATCH 06/35] tests: functional: Implement a workaround for issue with screenshots pytest_splinter has an issue with creating screenshots when using session_browser instead of a browser fixture. Implement a workaround. See: https://github.com/pytest-dev/pytest-splinter/pull/157 Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- conftest.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/conftest.py b/conftest.py index 10aca349c..5c2706f4a 100644 --- a/conftest.py +++ b/conftest.py @@ -166,3 +166,64 @@ def fixture_call_action(request, capsys, actions_module): return captured.out return _call_action + + +@pytest.fixture(autouse=True) +def fixture_fix_session_browser_screenshots(request): + """Fix a bug in pytest-splinter for screenshots. + + When using session_browser, pytest-splinter does not take a screenshot when + a test has failed. It is uses internal pytest API on the FixtureRequest + object. This API was removed in later versions of pytest causing the + failure. Re-implement the fixture that has the problem fixing this issue. + + Drop this fixture after a fix is merged and released in pytest-splinter. + See: https://github.com/pytest-dev/pytest-splinter/pull/157 + """ + yield + + if not request.config.pluginmanager.has_plugin('pytest-splinter'): + return + + session_tmpdir = request.getfixturevalue('session_tmpdir') + splinter_session_scoped_browser = request.getfixturevalue( + 'splinter_session_scoped_browser') + splinter_make_screenshot_on_failure = request.getfixturevalue( + 'splinter_make_screenshot_on_failure') + splinter_screenshot_dir = request.getfixturevalue( + 'splinter_screenshot_dir') + splinter_screenshot_getter_html = request.getfixturevalue( + 'splinter_screenshot_getter_html') + splinter_screenshot_getter_png = request.getfixturevalue( + 'splinter_screenshot_getter_png') + splinter_screenshot_encoding = request.getfixturevalue( + 'splinter_screenshot_encoding') + + # Screenshot for function scoped browsers is handled in + # browser_instance_getter + if not splinter_session_scoped_browser: + return + + for name in request.fixturenames: + fixture_def = request._fixture_defs.get(name) + if not fixture_def or not fixture_def.cached_result: + continue + + value = fixture_def.cached_result[0] + should_take_screenshot = (hasattr(value, "__splinter_browser__") + and splinter_make_screenshot_on_failure + and getattr(request.node, 'splinter_failure', + True)) + + from pytest_splinter import plugin + if should_take_screenshot: + plugin._take_screenshot( + request=request, + fixture_name=name, + session_tmpdir=session_tmpdir, + browser_instance=value, + splinter_screenshot_dir=splinter_screenshot_dir, + splinter_screenshot_getter_html=splinter_screenshot_getter_html, + splinter_screenshot_getter_png=splinter_screenshot_getter_png, + splinter_screenshot_encoding=splinter_screenshot_encoding, + ) From 98cfa321cb466d75c81a65adcd141ab5b3fdda06 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 22 Dec 2021 19:03:59 -0800 Subject: [PATCH 07/35] wordpress: tests: functional: Add missing marks on tests Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/wordpress/tests/test_functional.py | 2 ++ pyproject.toml | 1 + 2 files changed, 3 insertions(+) diff --git a/plinth/modules/wordpress/tests/test_functional.py b/plinth/modules/wordpress/tests/test_functional.py index 8a594a5b4..4f73fd984 100644 --- a/plinth/modules/wordpress/tests/test_functional.py +++ b/plinth/modules/wordpress/tests/test_functional.py @@ -7,6 +7,8 @@ import pytest from plinth.tests import functional +pytestmark = [pytest.mark.apps, pytest.mark.wordpress] + @pytest.fixture(scope='module', autouse=True) def fixture_background(session_browser): diff --git a/pyproject.toml b/pyproject.toml index 5e46e2701..0d4e658b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,5 +64,6 @@ markers = [ "ttrss", "upgrades", "users", + "wordpress", "zoph", ] From 81814e487f4cdc39f411a4520b2d327dc1e979c2 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Fri, 21 Jan 2022 13:32:49 -0800 Subject: [PATCH 08/35] tests: functional: Set default screenshots dir as ./screenshots Tests: - Fail a functional test using assert False. Notice that the screenshot is taken in ./screenshots directory. - Pass --splinter-screenshot-dir=foo and notice that the screenshot is taken in ./foo directory. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- conftest.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/conftest.py b/conftest.py index 5c2706f4a..e84b08e08 100644 --- a/conftest.py +++ b/conftest.py @@ -168,6 +168,17 @@ def fixture_call_action(request, capsys, actions_module): return _call_action +@pytest.fixture(name='splinter_screenshot_dir', scope='session') +def fixture_splinter_screenshot_dir(request): + """Set default screenshot directory to ./screenshots. + + This can be overridden using --splinter-screenshot-dir=foo as the option. + """ + option = request.config.getoption('--splinter-screenshot-dir') + screenshots_dir = option if option != '.' else './screenshots' + return os.path.abspath(screenshots_dir) + + @pytest.fixture(autouse=True) def fixture_fix_session_browser_screenshots(request): """Fix a bug in pytest-splinter for screenshots. From 29471d5523f4c4ed833f8aad8086e7159fac0ec3 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 22 Jan 2022 13:17:14 -0500 Subject: [PATCH 09/35] .gitignore: Add screenshots/ Signed-off-by: James Valleroy --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index db26474e7..812d5c4ad 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,7 @@ debian/freedombox-doc-es.substvars debian/freedombox-doc-es/ *.pytest_cache/ .container/ +screenshots/ # Editor settings .vscode/ From 0bc9b837fe6878ddc57287c060b59c0fe806016d Mon Sep 17 00:00:00 2001 From: Coucouf Date: Fri, 21 Jan 2022 21:23:34 +0000 Subject: [PATCH 10/35] Translated using Weblate (French) Currently translated at 100.0% (1447 of 1447 strings) --- plinth/locale/fr/LC_MESSAGES/django.po | 72 +++++++------------------- 1 file changed, 20 insertions(+), 52 deletions(-) diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 342b911eb..4ea3c81fa 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-11 19:11-0500\n" -"PO-Revision-Date: 2021-12-18 21:57+0000\n" +"PO-Revision-Date: 2022-01-22 21:55+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French \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 4.10\n" +"X-Generator: Weblate 4.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -484,20 +484,16 @@ msgid "Existing Backups" msgstr "Sauvegardes existantes" #: plinth/modules/backups/templates/backups_add_remote_repository.html:19 -#, fuzzy, python-format -#| msgid "" -#| "The credentials for this repository are stored on your %(box_name)s.
To restore a backup on a new %(box_name)s you need the ssh credentials " -#| "and, if chosen, the encryption passphrase." +#, python-format msgid "" "The credentials for this repository are stored on your %(box_name)s.
" "To restore a backup on a new %(box_name)s you need the SSH credentials and, " "if chosen, the encryption passphrase." msgstr "" -"Les informations d’identification pour ce dépôt sont stockées sur votre " -"%(box_name)s.
Pour restaurer une sauvegarde sur une nouvelle " -"%(box_name)s, vous devrez disposer des informations d’identification SSH et, " -"le cas échéant, de la phrase secrète de chiffrement." +"Les informations de connexion à ce dépôt sont stockées sur votre %(box_name)" +"s.
Pour restaurer une sauvegarde sur une nouvelle %(box_name)s, vous " +"aurez besoin de ces informations de connexion SSH et, le cas échéant, de la " +"phrase secrète de chiffrement." #: plinth/modules/backups/templates/backups_add_remote_repository.html:28 msgid "Create Location" @@ -652,20 +648,15 @@ msgid "How to verify?" msgstr "Comment vérifier ?" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:45 -#, fuzzy -#| msgid "" -#| "Run the following command on the SSH host machine. The output should " -#| "match one of the provided options. You can also use dsa, ecdsa, ed25519 " -#| "etc. instead of rsa, by choosing the corresponding file." msgid "" "Run the following command on the SSH host machine. The output should match " "one of the provided options. You can also use DSA, ECDSA, Ed25519 etc. " "instead of RSA, by choosing the corresponding file." msgstr "" "Lancez la commande suivante sur la machine hébergeant le serveur SSH. La " -"sortie devrait correspondre à l’une des valeurs affichées ci-dessus. Vous " -"pouvez également utiliser dsa, ecdsa, ed25519, etc. à la place de rsa en " -"sélectionnant le fichier correspondant dans la commande." +"sortie doit correspondre à l’une des valeurs affichées ci-dessus. Vous " +"pouvez également utiliser DSA, ECDSA, Ed25519, etc. à la place de RSA en " +"indiquant le chemin du fichier correspondant dans la commande." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:60 msgid "Verify Host" @@ -2902,11 +2893,6 @@ msgid "Anonymous Torrents" msgstr "Torrents anonymes" #: plinth/modules/i2p/views.py:16 -#, fuzzy -#| msgid "" -#| "I2P lets you browse the Internet and hidden services (eepsites) " -#| "anonymously. For this, your browser, preferably a Tor Browser, needs to " -#| "be configured for a proxy." msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably the Tor Browser, needs to be configured " @@ -3743,20 +3729,14 @@ msgstr "" "et à faible temps de latence." #: plinth/modules/mumble/__init__.py:28 -#, fuzzy -#| 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." msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and mobile devices are available." msgstr "" "Vous pouvez vous connecter au serveur Mumble sur le port Mumble habituel " -"64738. Utilisez l’un des clients " -"permettant de se connecter à Mumble depuis votre ordinateur ou votre " -"appareil Android." +"64738. Utilisez l’un des clients Mumble " +"pour vous connecter depuis votre ordinateur ou un appareil mobile." #: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" @@ -4725,21 +4705,17 @@ msgstr "" "%(box_name)s puisse fournir ses services." #: plinth/modules/networks/templates/router_configuration_content.html:32 -#, fuzzy -#| msgid "" -#| "If you don't have control over your router, choose not to configure it. " -#| "To see options to overcome this limitation, choose 'no public address' " -#| "option in Internet connection type selection." msgid "" "If you don't have control over your router, choose not to configure it. To " "see options to overcome this limitation, choose 'I dont have a public IP " "address' option in Internet connection type selection." msgstr "" -"Si vous n’avez pas le contrôle de votre routeur, choisissez de ne pas le " -"configurer. Pour voir les options permettant de surmonter cette limitation, " -"choisissez l’option « pas d’adresses publique » dans la sélection du type de " -"connexion à Internet." +"Si vous n’avez pas le contrôle de votre routeur, choisissez l’option de ne " +"pas le configurer. Pour plus d’informations sur les manières de contourner " +"cette limitation, choisissez l’option « Je n’ai d’adresse IP publique » dans " +"la sélection du type de connexion à Internet." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" @@ -7088,8 +7064,6 @@ msgstr "" "l’utilisation de BitTorrent n’est pas anonyme." #: plinth/modules/transmission/__init__.py:27 -#, fuzzy -#| msgid "Please do not change the default port of the transmission daemon." msgid "Please do not change the default port of the Transmission daemon." msgstr "Veuillez ne pas changer le port par défaut du démon de Transmission." @@ -7168,10 +7142,8 @@ msgstr "" #: plinth/modules/upgrades/__init__.py:129 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 -#, fuzzy -#| msgid "Software Upgrades" msgid "Software Update" -msgstr "Mises à Niveau Logiciels" +msgstr "Mise à jour du système" #: plinth/modules/upgrades/__init__.py:132 msgid "FreedomBox Updated" @@ -7279,8 +7251,7 @@ msgstr "" " " #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 -#, fuzzy, python-format -#| msgid "%(box_name)s Updated" +#, python-format msgid "%(box_name)s updated" msgstr "%(box_name)s mise à jour" @@ -7801,9 +7772,6 @@ msgid "Use this connection to send all outgoing traffic" msgstr "Utiliser cette connexion pour y envoyer tout le trafic sortant" #: plinth/modules/wireguard/forms.py:107 -#, fuzzy -#| msgid "" -#| "Typically checked for a VPN service though which all traffic is sent." msgid "Typically checked for a VPN service through which all traffic is sent." msgstr "" "À activer en général pour un service de réseau privé virtuel VPN à travers " @@ -8178,7 +8146,7 @@ msgstr "Générique" #: plinth/package.py:94 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" -msgstr "" +msgstr "Le paquet {package_name} est à la dernière version ({latest_version})" #: plinth/package.py:245 msgid "Error during installation" From 855875daafc49c8c45c4a4e840d43faec14f318e Mon Sep 17 00:00:00 2001 From: 109247019824 Date: Fri, 21 Jan 2022 09:01:24 +0000 Subject: [PATCH 11/35] Translated using Weblate (Bulgarian) Currently translated at 8.6% (125 of 1447 strings) --- plinth/locale/bg/LC_MESSAGES/django.po | 46 +++++++++++++++----------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index f5ac0bdc7..15264bcaf 100644 --- a/plinth/locale/bg/LC_MESSAGES/django.po +++ b/plinth/locale/bg/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-11 19:11-0500\n" -"PO-Revision-Date: 2021-10-19 15:13+0000\n" +"PO-Revision-Date: 2022-01-22 21:55+0000\n" "Last-Translator: 109247019824 \n" "Language-Team: Bulgarian \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 4.9-dev\n" +"X-Generator: Weblate 4.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -165,7 +165,7 @@ msgid "" "remote backup location or an extra attached disk." msgstr "" "Направете график за автоматично архивиране за безопасност на данните. " -"Предпочитайте шифровано местоположение за отдалечено архивиране или " +"Предпочетете шифровано местоположение за отдалечено архивиране или " "допълнително свързан диск." #: plinth/modules/backups/__init__.py:205 @@ -327,7 +327,7 @@ msgid "" "\"Key in Repository\" means that a password-protected key is stored with the " "backup." msgstr "" -"„Ключ в хранилището“ означава, че ключ защитен с парола се съхранява заедно " +"„Ключ в хранилището“ означава, че защитен с парола ключ се съхранява заедно " "с резервното копие." #: plinth/modules/backups/forms.py:176 @@ -429,8 +429,8 @@ msgstr "Достъпът през SSH е отказан" #: plinth/modules/backups/repository.py:64 msgid "Repository path is neither empty nor is an existing backups repository." msgstr "" -"Пътят до хранилището не е празен, нито е съществуващо хранилище за резервни " -"копия." +"Папката на хранилището не е празна, а и не е съществуващо хранилище за " +"резервни копия." #: plinth/modules/backups/repository.py:143 msgid "Existing repository is not encrypted." @@ -460,19 +460,19 @@ msgstr "Качване и възстановяване" #: plinth/modules/backups/templates/backups.html:31 msgid "Add a backup location" -msgstr "Добавяне на местоположение за архивиране" +msgstr "Добавяне на хранилище за резервни копия" #: plinth/modules/backups/templates/backups.html:35 msgid "Add Backup Location" -msgstr "Добавяне на местоположение за резервни копия" +msgstr "Добавяне на хранилище за резервни копия" #: plinth/modules/backups/templates/backups.html:38 msgid "Add a remote backup location" -msgstr "Добавяне на отдалечено местоположение за резервни копия" +msgstr "Добавяне на отдалечено хранилище за резервни копия" #: plinth/modules/backups/templates/backups.html:42 msgid "Add Remote Backup Location" -msgstr "Добавяне на отдалечено местоположение за резервни копия" +msgstr "Добавяне на отдалечено хранилище за резервни копия" #: plinth/modules/backups/templates/backups.html:46 msgid "Existing Backups" @@ -485,15 +485,18 @@ msgid "" "To restore a backup on a new %(box_name)s you need the SSH credentials and, " "if chosen, the encryption passphrase." msgstr "" +"Данните за достъп до хранилището се съхраняват в устройство „%(box_name)s“" +".
За да възстановите от архивно копие на %(box_name)s са ви е необходими " +"данните за достъп през SSH и, ако е избрано шифроване, шифроващата фраза." #: plinth/modules/backups/templates/backups_add_remote_repository.html:28 msgid "Create Location" -msgstr "" +msgstr "Добавяне на хранилище" #: plinth/modules/backups/templates/backups_add_repository.html:19 #: plinth/modules/gitweb/views.py:50 msgid "Create Repository" -msgstr "" +msgstr "Създаване на хранилище" #: plinth/modules/backups/templates/backups_delete.html:12 msgid "Delete this archive permanently?" @@ -531,15 +534,17 @@ msgstr "График" #: plinth/modules/backups/templates/backups_repository.html:40 msgid "Unmount Location" -msgstr "" +msgstr "Изключване на хранилище" #: plinth/modules/backups/templates/backups_repository.html:51 msgid "Mount Location" -msgstr "" +msgstr "Включване на хранилище" #: plinth/modules/backups/templates/backups_repository.html:62 msgid "Remove Backup Location. This will not delete the remote backup." msgstr "" +"Премахване на хранилище за резервни копия. Данните в хранилището няма да " +"бъдат премахнати." #: plinth/modules/backups/templates/backups_repository.html:83 msgid "Download" @@ -557,17 +562,20 @@ msgstr "" #: plinth/modules/backups/templates/backups_repository_remove.html:13 msgid "Are you sure that you want to remove this repository?" -msgstr "" +msgstr "Сигурни ли сте, че желаете да премахнете хранилището?" #: plinth/modules/backups/templates/backups_repository_remove.html:19 msgid "" "The remote repository will not be deleted. This just removes the repository " "from the listing on the backup page, you can add it again later on." msgstr "" +"Отдалеченото хранилище не е премахнато. Това действие го премахва само от " +"списъка на страницата за резервни копия, така че по-късно можете да го " +"добавите отново." #: plinth/modules/backups/templates/backups_repository_remove.html:31 msgid "Remove Location" -msgstr "" +msgstr "Премахване на хранилище" #: plinth/modules/backups/templates/backups_restore.html:15 msgid "Restore data from" @@ -669,15 +677,15 @@ msgstr "" #: plinth/modules/backups/views.py:289 msgid "No additional disks available to add a repository." -msgstr "" +msgstr "Няма допълнителни дискове, на които да бъде създадено хранилище." #: plinth/modules/backups/views.py:297 msgid "Create backup repository" -msgstr "" +msgstr "Създаване на хранилище за резервни копия" #: plinth/modules/backups/views.py:324 msgid "Create remote backup repository" -msgstr "" +msgstr "Създаване на отдалечено хранилище за резервни копия" #: plinth/modules/backups/views.py:344 msgid "Added new remote SSH repository." From 14505513327faf06df5aa64bda4d0797dc5baf6a Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Wed, 19 Jan 2022 12:15:16 -0500 Subject: [PATCH 12/35] shaarli: Add backup component Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/shaarli/__init__.py | 5 +++++ plinth/modules/shaarli/manifest.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/plinth/modules/shaarli/__init__.py b/plinth/modules/shaarli/__init__.py index b58062559..722f3ca59 100644 --- a/plinth/modules/shaarli/__init__.py +++ b/plinth/modules/shaarli/__init__.py @@ -8,6 +8,7 @@ from django.utils.translation import gettext_lazy as _ from plinth import app as app_module from plinth import frontpage, menu from plinth.modules.apache.components import Webserver +from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.package import Packages @@ -62,6 +63,10 @@ class ShaarliApp(app_module.App): webserver = Webserver('webserver-shaarli', 'shaarli') self.add(webserver) + backup_restore = BackupRestore('backup-restore-shaarli', + **manifest.backup) + self.add(backup_restore) + def setup(helper, old_version=None): """Install and configure the module.""" diff --git a/plinth/modules/shaarli/manifest.py b/plinth/modules/shaarli/manifest.py index a1c758ea0..152413363 100644 --- a/plinth/modules/shaarli/manifest.py +++ b/plinth/modules/shaarli/manifest.py @@ -28,3 +28,5 @@ clients = [{ 'url': '/shaarli/' }] }] + +backup = {'data': {'directories': ['/var/lib/shaarli/data']}} From a4a1f076839c5c0897ea474f079d7dad86ee43a9 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Wed, 19 Jan 2022 12:15:49 -0500 Subject: [PATCH 13/35] shaarli: Add functional test Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/shaarli/tests/test_functional.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 plinth/modules/shaarli/tests/test_functional.py diff --git a/plinth/modules/shaarli/tests/test_functional.py b/plinth/modules/shaarli/tests/test_functional.py new file mode 100644 index 000000000..4dc86c3b4 --- /dev/null +++ b/plinth/modules/shaarli/tests/test_functional.py @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Functional, browser based tests for shaarli app. +""" + +import pytest + +from plinth.tests.functional import BaseAppTests + +pytestmark = [pytest.mark.apps, pytest.mark.shaarli] + + +class TestShaarliApp(BaseAppTests): + app_name = 'shaarli' + has_service = False + has_web = True + # TODO: Complete Shaarli setup. + # TODO: Add, edit, remove bookmark. From 78b669d4510ad03b5bf7663d9c37b99f6828ced4 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 22 Jan 2022 09:43:24 -0500 Subject: [PATCH 14/35] shaarli: Test adding a bookmark Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- .../modules/shaarli/tests/test_functional.py | 63 +++++++++++++++++-- pyproject.toml | 1 + 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/plinth/modules/shaarli/tests/test_functional.py b/plinth/modules/shaarli/tests/test_functional.py index 4dc86c3b4..bdf14ec2b 100644 --- a/plinth/modules/shaarli/tests/test_functional.py +++ b/plinth/modules/shaarli/tests/test_functional.py @@ -4,15 +4,70 @@ Functional, browser based tests for shaarli app. """ import pytest +import time -from plinth.tests.functional import BaseAppTests +from plinth.tests import functional pytestmark = [pytest.mark.apps, pytest.mark.shaarli] -class TestShaarliApp(BaseAppTests): +class TestShaarliApp(functional.BaseAppTests): app_name = 'shaarli' has_service = False has_web = True - # TODO: Complete Shaarli setup. - # TODO: Add, edit, remove bookmark. + + @pytest.fixture(scope='class', autouse=True) + def fixture_setup(self, session_browser): + """Setup the app.""" + functional.login(session_browser) + functional.install(session_browser, self.app_name) + functional.app_enable(session_browser, self.app_name) + self._shaarli_is_setup(session_browser) + + def _shaarli_is_setup(self, session_browser): + """Finish shaarli installation by creating user.""" + functional.access_url(session_browser, self.app_name) + if not session_browser.url.endswith('/shaarli/install'): + # Setup has already been completed. + return + + username_field = session_browser.find_by_id('username') + username_field.fill(functional.config['DEFAULT']['username']) + + password_field = session_browser.find_by_id('password') + password_field.fill(functional.config['DEFAULT']['password']) + + functional.submit(session_browser) + + def _shaarli_login(self, session_browser): + """Login to shaarli.""" + functional.access_url(session_browser, 'shaarli/login') + + login_form = session_browser.find_by_id('login-form') + if not login_form: + return + + login_field = login_form.find_by_name('login') + login_field.fill(functional.config['DEFAULT']['username']) + + password_field = login_form.find_by_name('password') + password_field.fill(functional.config['DEFAULT']['password']) + + login_form.find_by_css('input[type=submit]').click() + + def test_add_bookmark(self, session_browser): + """Test adding a bookmark.""" + self._shaarli_login(session_browser) + functional.access_url(session_browser, 'shaarli/admin/add-shaare') + + addlink_form = session_browser.find_by_id('addlink-form') + addlink_form.find_by_id('shaare').fill('https://freedombox.org/') + addlink_form.find_by_css('input[type=submit]').click() + + time.sleep(2) + session_browser.find_by_id('button-save-edit').click() + + links = session_browser.links.find_by_href('https://freedombox.org/') + assert len(links) > 0 + + # TODO: Test deleting bookmarks. diff --git a/pyproject.toml b/pyproject.toml index 0d4e658b9..ab06abf5f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,6 +51,7 @@ markers = [ "samba", "searx", "security", + "shaarli", "shadowsocks", "sharing", "snapshot", From e50cab3402e3a37a62f3d2b52b568318e9b9e3f9 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 19 Jan 2022 11:16:53 -0800 Subject: [PATCH 15/35] doc: Fail when downloading images from Debian wiki fails Fixes: #2173. When a wget process fails to download an image from Debian wiki for any reason, fail the whole fetching process so that the users notices it and reruns the process. Earlier, these were failing silently leading to zero sized images. Tests: - Without the change, notice that when wget process is killed during fetching of images, it leads to incorrect image files (partially downloaded or zero sized files). - With or without the changes, killing wget process at other times leads to fetch process halting indicating that wget in normal cases fails correctly. - With the change, killing the wget process will lead to an error and the fetching process stops. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- doc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Makefile b/doc/Makefile index 4e63015cb..147926ae4 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -85,7 +85,7 @@ $(fetch-main-list): fetch-main-%: fetch-cleanup-% xsltproc $(SCRIPTS_DIR)/fetch-images.xslt manual/$(lang)/freedombox-manual.raw.xml | \ sort -u | \ awk 'NF {print "wget --quiet -O manual/$(lang)/images/" $$1 " " $$2}' | \ - sh + sh -e rm manual/$(lang)/freedombox-manual.raw.xml fetch-pages-%: lang = $* From afb53d3e4afff203eda8be03101c3637dc52131f Mon Sep 17 00:00:00 2001 From: Michael Breidenbach Date: Sun, 23 Jan 2022 11:59:00 +0000 Subject: [PATCH 16/35] Translated using Weblate (Swedish) Currently translated at 99.3% (1438 of 1447 strings) --- plinth/locale/sv/LC_MESSAGES/django.po | 37 +++++++++++++------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 53edd969c..fdc2f44ba 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: 2022-01-11 19:11-0500\n" -"PO-Revision-Date: 2022-01-10 17:57+0000\n" +"PO-Revision-Date: 2022-01-24 12:53+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish \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 4.10.1\n" +"X-Generator: Weblate 4.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" -msgstr "Sid källa" +msgstr "Sidkälla" #: plinth/context_processors.py:23 plinth/views.py:84 msgid "FreedomBox" @@ -30,7 +30,7 @@ msgstr "FreedomBox" #: plinth/daemon.py:104 #, python-brace-format msgid "Service {service_name} is running" -msgstr "Tjänsten service {service_name} körs" +msgstr "Tjänsten {service_name} körs" #: plinth/daemon.py:158 #, python-brace-format @@ -120,12 +120,12 @@ msgstr "{box_name} Webbgränssnitt (Plinth)" #: plinth/modules/apache/components.py:122 #, python-brace-format msgid "Access URL {url} on tcp{kind}" -msgstr "Ansluter till adress {url} on tcp{kind}" +msgstr "Anslut till adress {url} på tcp{kind}" #: plinth/modules/apache/components.py:125 #, python-brace-format msgid "Access URL {url}" -msgstr "Ansluter till adress {url}" +msgstr "Anslut till adress {url}" #: plinth/modules/avahi/__init__.py:26 #, python-brace-format @@ -2060,11 +2060,11 @@ msgstr "Ange ett giltigt domän" #: plinth/modules/email_server/forms.py:20 msgid "Enter a valid destination" -msgstr "Ange ett giltigt destination" +msgstr "Ange ett giltigt destination" #: plinth/modules/email_server/forms.py:24 msgid "domain" -msgstr "domain" +msgstr "domän" #: plinth/modules/email_server/forms.py:38 msgid "Primary domain" @@ -2465,7 +2465,7 @@ msgstr "Dokumentation" #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 msgctxt "User guide" msgid "Manual" -msgstr "Handledning" +msgstr "Handbok" #: plinth/modules/help/__init__.py:43 #: plinth/modules/help/templates/help_support.html:9 @@ -4938,7 +4938,7 @@ msgstr "Virtuellt privat nätverk" msgid "" "Download Profile" msgstr "" -"Ladda ner profil" +"Nedladdningsprofil" #: plinth/modules/openvpn/manifest.py:52 msgid "Tunnelblick" @@ -5358,7 +5358,7 @@ msgstr "Webbproxy" #: plinth/modules/privoxy/__init__.py:114 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" -msgstr "Åtkomst till {url} med proxy {proxy} på TCP {kind}" +msgstr "Anslut till {url} med proxy {proxy} på TCP {kind}" #: plinth/modules/quassel/__init__.py:27 #, python-brace-format @@ -5506,7 +5506,7 @@ msgstr "" #: plinth/modules/radicale/views.py:35 msgid "Access rights configuration updated" -msgstr "Konfiguration av åtkomsträttigheter uppdaterad" +msgstr "Konfiguration av åtkomsträttigheter uppdaterat" #: plinth/modules/roundcube/__init__.py:19 msgid "" @@ -5597,7 +5597,7 @@ msgstr "" #: plinth/modules/samba/__init__.py:56 msgid "Access to the private shares" -msgstr "Tillgång till de privata shares" +msgstr "Tillgång till privata delningar" #: plinth/modules/samba/__init__.py:59 msgid "Samba" @@ -5683,7 +5683,7 @@ msgstr "Resursnamn" #: plinth/modules/samba/templates/samba.html:141 msgid "Action" -msgstr "Åtgärder" +msgstr "Åtgärd" #: plinth/modules/samba/views.py:33 msgid "FreedomBox OS disk" @@ -7032,8 +7032,7 @@ msgstr "Aktivera automatisk uppdatering" #: plinth/modules/upgrades/forms.py:16 msgid "When enabled, FreedomBox automatically updates once a day." -msgstr "" -"När den är aktiverad uppdateras FreedomBox automatiskt en gång om dagen." +msgstr "När den är aktiverad uppdateras FreedomBox automatiskt dagligen." #: plinth/modules/upgrades/forms.py:19 msgid "Enable auto-update to next stable release" @@ -7044,8 +7043,8 @@ msgid "" "When enabled, FreedomBox will update to the next stable distribution release " "when it is available." msgstr "" -"När det är aktiverat kommer FreedomBox att uppdatera till nästa stabila " -"distributionsutgåva när den är tillgänglig." +"När aktiverad, kommer FreedomBox att uppdatera till nästa stabila " +"distributionsutgåva om tillgänglig." #: plinth/modules/upgrades/forms.py:34 #: plinth/modules/upgrades/templates/upgrades_configure.html:89 @@ -7241,7 +7240,7 @@ msgstr "Användare och grupper" #: plinth/modules/users/__init__.py:77 msgid "Access to all services and system settings" -msgstr "Tillgång till alla tjänster och Systeminställningar" +msgstr "Tillgång till alla tjänster och systeminställningar" #: plinth/modules/users/__init__.py:113 #, python-brace-format From 6ce3627a1181a918f65bff9aa4ae0d987a7477a6 Mon Sep 17 00:00:00 2001 From: Benedek Nagy Date: Thu, 27 Jan 2022 13:03:18 +0000 Subject: [PATCH 17/35] matrixsynapse: Add FluffyChat to client list - Licensed under AGPL3, available on F-Droid. Reviewed-by: Sunil Mohan Adapa --- plinth/modules/matrixsynapse/manifest.py | 34 +++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/plinth/modules/matrixsynapse/manifest.py b/plinth/modules/matrixsynapse/manifest.py index f246f2998..efeddb638 100644 --- a/plinth/modules/matrixsynapse/manifest.py +++ b/plinth/modules/matrixsynapse/manifest.py @@ -4,8 +4,10 @@ from django.utils.translation import gettext_lazy as _ from plinth.clients import store_url -_android_package_id = 'im.vector.app' +_element_android_package_id = 'im.vector.app' _element_desktop_download_url = 'https://element.io/get-started' +_fluffychat_android_package_id = 'chat.fluffy.fluffychat' +_fluffychat_desktop_download_url = 'https://fluffychat.im/' clients = [{ 'name': @@ -14,12 +16,12 @@ clients = [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', - 'url': store_url('google-play', _android_package_id) + 'url': store_url('google-play', _element_android_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', - 'url': store_url('f-droid', _android_package_id) + 'url': store_url('f-droid', _element_android_package_id) }, { 'type': 'store', 'os': 'ios', @@ -41,6 +43,32 @@ clients = [{ 'os': 'windows', 'url': _element_desktop_download_url, }] +}, { + 'name': + _('FluffyChat'), + 'platforms': [{ + 'type': 'store', + 'os': 'android', + 'store_name': 'google-play', + 'url': store_url('google-play', _fluffychat_android_package_id) + }, { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', _fluffychat_android_package_id) + }, { + 'type': 'store', + 'os': 'ios', + 'store_name': 'app-store', + 'url': 'https://apps.apple.com/app/fluffychat/id1551469600' + }, { + 'type': 'web', + 'url': 'https://fluffychat.im/web' + }, { + 'type': 'download', + 'os': 'gnu-linux', + 'url': _fluffychat_desktop_download_url, + }] }] backup = { From 209da888cdcebfdac1fbdb7af3e30d8e74e5233f Mon Sep 17 00:00:00 2001 From: Benedek Nagy Date: Thu, 20 Jan 2022 23:19:03 +0000 Subject: [PATCH 18/35] power: Add a link to power app in the system menu Closes: #1817. [sunil: Run isort and yapf] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/power/__init__.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plinth/modules/power/__init__.py b/plinth/modules/power/__init__.py index 89c3a4356..51b5900ac 100644 --- a/plinth/modules/power/__init__.py +++ b/plinth/modules/power/__init__.py @@ -6,6 +6,7 @@ FreedomBox app for power controls. from django.utils.translation import gettext_lazy as _ from plinth import app as app_module +from plinth import menu from plinth.modules.backups.components import BackupRestore from . import manifest @@ -28,11 +29,14 @@ class PowerApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=self._version, is_essential=True, name=_('Power'), - description=_description, manual_page='Power') + icon='fa-power-off', description=_description, + manual_page='Power') self.add(info) + menu_item = menu.Menu('menu-power', info.name, None, info.icon, + 'power:index', parent_url_name='system') + self.add(menu_item) + backup_restore = BackupRestore('backup-restore-power', **manifest.backup) self.add(backup_restore) - - # not in menu, see issue #834 From bec034571ba95b6b27d007a4048bae2f25e36592 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Fri, 28 Jan 2022 13:45:58 +0000 Subject: [PATCH 19/35] Translated using Weblate (Russian) Currently translated at 99.9% (1446 of 1447 strings) --- plinth/locale/ru/LC_MESSAGES/django.po | 581 +++++++++++-------------- 1 file changed, 252 insertions(+), 329 deletions(-) diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 084aa075f..1988ba504 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-11 19:11-0500\n" -"PO-Revision-Date: 2021-09-10 07:34+0000\n" -"Last-Translator: Artem \n" +"PO-Revision-Date: 2022-01-29 13:55+0000\n" +"Last-Translator: Nikita Epifanov \n" "Language-Team: Russian \n" "Language: ru\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.8.1-dev\n" +"X-Generator: Weblate 4.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -107,7 +107,7 @@ msgstr "Ошибка при установке приложения: {error}" #: plinth/modules/apache/__init__.py:33 msgid "Apache HTTP Server" -msgstr "Apache HTTP-сервер" +msgstr "Apache HTTP сервер" #: plinth/modules/apache/__init__.py:41 msgid "Web Server" @@ -173,17 +173,15 @@ msgstr "" "или дополнительный подключенный диск." #: plinth/modules/backups/__init__.py:205 -#, fuzzy msgid "Enable a Backup Schedule" msgstr "Включить расписание резервного копирования" #: plinth/modules/backups/__init__.py:209 #: plinth/modules/backups/__init__.py:256 #: plinth/modules/storage/__init__.py:329 -#, fuzzy, python-brace-format -#| msgid "About {box_name}" +#, python-brace-format msgid "Go to {app_name}" -msgstr "О {box_name}" +msgstr "Перейти в {app_name}" #: plinth/modules/backups/__init__.py:244 #, python-brace-format @@ -196,10 +194,8 @@ msgstr "" "{error_message}" #: plinth/modules/backups/__init__.py:252 -#, fuzzy -#| msgid "Existing Backups" msgid "Error During Backup" -msgstr "Существующие резервные копии" +msgstr "Ошибка во время резервного копирования" #: plinth/modules/backups/forms.py:33 #, python-brace-format @@ -207,12 +203,10 @@ msgid "{app} (No data to backup)" msgstr "{app} (Нет данных для резервного сохранения)" #: plinth/modules/backups/forms.py:53 -#, fuzzy msgid "Enable scheduled backups" msgstr "Включить резервное копирование по расписанию" #: plinth/modules/backups/forms.py:54 -#, fuzzy msgid "" "If enabled, a backup is taken every day, every week and every month. Older " "backups are removed." @@ -221,7 +215,6 @@ msgstr "" "каждую неделю и каждый месяц. Более старые резервные копии удаляются." #: plinth/modules/backups/forms.py:58 -#, fuzzy msgid "Number of daily backups to keep" msgstr "Количество ежедневных резервных копий для хранения" @@ -230,6 +223,9 @@ msgid "" "This many latest backups are kept and the rest are removed. A value of \"0\" " "disables backups of this type. Triggered at specified hour every day." msgstr "" +"Это количество последних резервных копий сохраняется, а остальные удаляются. " +"Значение \"0\" отключает резервное копирование этого типа. Срабатывает в " +"указанный час каждый день." #: plinth/modules/backups/forms.py:64 msgid "Number of weekly backups to keep" @@ -240,10 +236,13 @@ msgid "" "This many latest backups are kept and the rest are removed. A value of \"0\" " "disables backups of this type. Triggered at specified hour every Sunday." msgstr "" +"Это количество последних резервных копий сохраняется, а остальные удаляются. " +"Значение \"0\" отключает резервное копирование этого типа. Срабатывает в " +"указанный час каждое воскресенье." #: plinth/modules/backups/forms.py:71 msgid "Number of monthly backups to keep" -msgstr "" +msgstr "Количество ежемесячных резервных копий для хранения" #: plinth/modules/backups/forms.py:73 msgid "" @@ -251,14 +250,17 @@ msgid "" "disables backups of this type. Triggered at specified hour first day of " "every month." msgstr "" +"Это количество последних резервных копий сохраняется, а остальные удаляются. " +"Значение \"0\" отключает резервное копирование этого типа. Срабатывает в " +"указанный час первого дня каждого месяца." #: plinth/modules/backups/forms.py:78 msgid "Hour of the day to trigger backup operation" -msgstr "" +msgstr "Час дня для запуска операции резервного копирования" #: plinth/modules/backups/forms.py:79 msgid "In 24 hour format." -msgstr "" +msgstr "В 24-часовом формате." #: plinth/modules/backups/forms.py:82 plinth/modules/backups/forms.py:104 msgid "Included apps" @@ -480,17 +482,13 @@ msgid "Existing Backups" msgstr "Существующие резервные копии" #: plinth/modules/backups/templates/backups_add_remote_repository.html:19 -#, fuzzy, python-format -#| msgid "" -#| "The credentials for this repository are stored on your %(box_name)s.
To restore a backup on a new %(box_name)s you need the ssh credentials " -#| "and, if chosen, the encryption passphrase." +#, python-format msgid "" "The credentials for this repository are stored on your %(box_name)s.
" "To restore a backup on a new %(box_name)s you need the SSH credentials and, " "if chosen, the encryption passphrase." msgstr "" -"Данные для входа в этот репозиторий сохранены в вашем %(box_name)s.
" +"Данные для входа в этот репозиторий сохранены в вашем %(box_name)s.
" "Чтобы провести резервное сохранение на %(box_name)s, вы должны ввести данные " "для входа SSH и, если выбрано, парольную фразу шифрования." @@ -535,7 +533,7 @@ msgstr "Репозиторий зашифрован" #: plinth/modules/backups/templates/backups_repository.html:29 msgid "Schedule" -msgstr "" +msgstr "Расписание" #: plinth/modules/backups/templates/backups_repository.html:40 msgid "Unmount Location" @@ -646,19 +644,14 @@ msgid "How to verify?" msgstr "Как проверить?" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:45 -#, fuzzy -#| msgid "" -#| "Run the following command on the SSH host machine. The output should " -#| "match one of the provided options. You can also use dsa, ecdsa, ed25519 " -#| "etc. instead of rsa, by choosing the corresponding file." msgid "" "Run the following command on the SSH host machine. The output should match " "one of the provided options. You can also use DSA, ECDSA, Ed25519 etc. " "instead of RSA, by choosing the corresponding file." msgstr "" "Выполните следующую команду на хост-машине SSH. Вывод должен соответствовать " -"одному из предложенных вариантов. Вы также можете использовать dsa, ecdsa, " -"ed25519 и т.д. вместо rsa, выбрав соответствующий файл." +"одному из предложенных вариантов. Вы также можете использовать DSA, ECDSA, " +"Ed25519 и т.д. вместо RSA, выбрав соответствующий файл." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:60 msgid "Verify Host" @@ -666,13 +659,11 @@ msgstr "Проверить хост" #: plinth/modules/backups/views.py:55 msgid "Backup schedule updated." -msgstr "" +msgstr "Расписание резервного копирования обновлено." #: plinth/modules/backups/views.py:74 -#, fuzzy -#| msgid "Create Backup" msgid "Schedule Backups" -msgstr "Создать резервную копию" +msgstr "Расписание резервного копирования" #: plinth/modules/backups/views.py:106 msgid "Archive created." @@ -1374,18 +1365,15 @@ msgstr "" "между сторонами, которые иначе не могут подключиться друг к другу." #: plinth/modules/coturn/__init__.py:34 -#, fuzzy, python-brace-format -#| msgid "" -#| "It is not meant to be used directly by users. Servers such as matrix-" -#| "synapse need to be configured with the details provided here." +#, python-brace-format msgid "" "It is not meant to be used directly by users. Servers such as Matrix Synapse or ejabberd need to " "be configured with the details provided here." msgstr "" "Он не предназначен для непосредственного использования пользователями. Такие " -"серверы, как matrix-synapse, должны быть настроены с указанными здесь " -"деталями." +"серверы, как Matrix Synapse или ejabberd, должны быть настроены с указанными здесь деталями." #: plinth/modules/coturn/__init__.py:57 msgid "Coturn" @@ -1397,7 +1385,7 @@ msgstr "VoIP-помощник" #: plinth/modules/coturn/forms.py:22 msgid "Invalid list of STUN/TURN Server URIs" -msgstr "" +msgstr "Неверный список URI серверов STUN/TURN" #: plinth/modules/coturn/templates/coturn.html:15 msgid "Use the following URLs to configure your communication server:" @@ -1515,7 +1503,7 @@ msgstr "ошибка" #: plinth/modules/diagnostics/__init__.py:100 msgid "warning" -msgstr "" +msgstr "предупреждение" #. Translators: This is the unit of computer storage Mebibyte similar to #. Megabyte. @@ -1689,12 +1677,7 @@ msgid "Leave this field empty if you want to keep your current password." msgstr "Оставьте это поле пустым, если вы хотите сохранить ваш текущий пароль." #: plinth/modules/dynamicdns/forms.py:54 -#, fuzzy, python-brace-format -#| msgid "" -#| "Optional Value. If your {box_name} is not connected directly to the " -#| "Internet (i.e. connected to a NAT router) this URL is used to determine " -#| "the real IP address. The URL should simply return the IP where the client " -#| "comes from (example: http://myip.datasystems24.de)." +#, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " "(i.e. connected to a NAT router) this URL is used to determine the real IP " @@ -1704,7 +1687,7 @@ msgstr "" "Необязательное значение. Если ваш {box_name} не подключен непосредственно к " "Интернету, (т.е. подключенный к маршрутизатору) этот URL-адрес используется " "для определения настоящего IP адреса. URL-адрес должен просто вернуть IP " -"(пример: http://myip.datasystems24.de)." +"(пример: https://ddns.freedombox.org/ip/)." #: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." @@ -1780,13 +1763,6 @@ msgid "Please provide a password" msgstr "Введите пароль" #: plinth/modules/dynamicdns/templates/dynamicdns.html:12 -#, fuzzy -#| msgid "" -#| "If you are looking for a free dynamic DNS account, you may find a free " -#| "GnuDIP service at gnudip.datasystems24.net or you may find free update " -#| "URL based services at freedns.afraid.org." msgid "" "If you are looking for a free dynamic DNS account, you may find a free " "GnuDIP service at ddns." @@ -1794,10 +1770,10 @@ msgid "" "href='http://freedns.afraid.org/' target='_blank'> freedns.afraid.org." msgstr "" "Если вы ищете бесплатный сервер динамического DNS, вы можете найти " -"бесплатный сервис GnuDIP на gnudip.datasystems24.net или вы можете найти беслатную " -"службу обновления URL-адреса на freedns.afraid.org." +"бесплатный сервис GnuDIP на ddns.freedombox.org или вы можете найти беслатную службу " +"обновления URL-адреса на freedns.afraid.org." #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 #, python-format @@ -1915,6 +1891,8 @@ msgid "" "ejabberd needs a STUN/TURN server for audio/video calls. Install the Coturn app or configure an external server." msgstr "" +"ejabberd необходим сервер STUN/TURN для аудио/видео звонков. Установите " +"приложение Coturn или настройте внешний сервер." #: plinth/modules/ejabberd/__init__.py:65 msgid "ejabberd" @@ -1944,7 +1922,7 @@ msgstr "" #: plinth/modules/ejabberd/forms.py:27 plinth/modules/matrixsynapse/forms.py:22 msgid "Automatically manage audio/video call setup" -msgstr "" +msgstr "Автоматическое управление настройкой аудио/видео звонков" #: plinth/modules/ejabberd/forms.py:29 #, python-brace-format @@ -1953,24 +1931,25 @@ msgid "" "server for ejabberd. Disable this if you want to use a different STUN/TURN " "server." msgstr "" +"Настраивает локальное приложение coturn в " +"качестве сервера STUN/TURN для ejabberd. Отключите это, если вы хотите " +"использовать другой сервер STUN/TURN." #: plinth/modules/ejabberd/forms.py:36 plinth/modules/matrixsynapse/forms.py:31 msgid "STUN/TURN Server URIs" -msgstr "" +msgstr "URI сервера STUN/TURN" #: plinth/modules/ejabberd/forms.py:38 plinth/modules/matrixsynapse/forms.py:33 msgid "List of public URIs of the STUN/TURN server, one on each line." -msgstr "" +msgstr "Список публичных URI сервера STUN/TURN, по одному в каждой строке." #: plinth/modules/ejabberd/forms.py:42 plinth/modules/matrixsynapse/forms.py:37 -#, fuzzy -#| msgid "Authentication Mode" msgid "Shared Authentication Secret" -msgstr "Режим проверки подлинности" +msgstr "Общие секрет аутентификации" #: plinth/modules/ejabberd/forms.py:43 plinth/modules/matrixsynapse/forms.py:38 msgid "Shared secret used to compute passwords for the TURN server." -msgstr "" +msgstr "Общий секрет, используемый для вычисления паролей для сервера TURN." #: plinth/modules/ejabberd/manifest.py:10 msgid "Conversations" @@ -2032,96 +2011,88 @@ msgid "" "Roundcube app provides web interface " "for users to access email." msgstr "" +"Приложение Roundcube предоставляет " +"пользователям веб-интерфейс для доступа к электронной почте." #: plinth/modules/email_server/__init__.py:33 msgid "" "During installation, any other email servers in the system will be " "uninstalled." msgstr "" +"Во время установки все другие почтовые серверы в системе будут " +"деинсталлированы." #: plinth/modules/email_server/__init__.py:44 -#, fuzzy -#| msgid "Chat Server" msgid "Email Server" -msgstr "Чат-сервер" +msgstr "Сервер электронной почты" #: plinth/modules/email_server/__init__.py:100 msgid "Powered by Postfix, Dovecot & Rspamd" -msgstr "" +msgstr "Работает на Postfix, Dovecot и Rspamd" #: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix-Dovecot SASL integration" -msgstr "" +msgstr "Интеграция SASL в Postfix-Dovecot" #: plinth/modules/email_server/audit/ldap.py:70 msgid "Postfix alias maps" -msgstr "" +msgstr "Карты псевдонимов Postfix" #: plinth/modules/email_server/audit/rcube.py:31 -#, fuzzy -#| msgid "Unavailable Shares" msgid "RoundCube availability" -msgstr "Недоступный общий доступ" +msgstr "Доступность RoundCube" #: plinth/modules/email_server/audit/rcube.py:32 msgid "RoundCube configured for FreedomBox email" -msgstr "" +msgstr "RoundCube настроен для электронной почты FreedomBox" #: plinth/modules/email_server/audit/spam.py:87 msgid "Inbound and outbound mail filters" -msgstr "" +msgstr "Фильтры входящей и исходящей почты" #: plinth/modules/email_server/forms.py:17 -#, fuzzy -#| msgid "Enter a valid username." msgid "Enter a valid domain" -msgstr "Введите действительное имя пользователя." +msgstr "Введите действительный домен" #: plinth/modules/email_server/forms.py:20 -#, fuzzy -#| msgid "Enter a valid username." msgid "Enter a valid destination" -msgstr "Введите действительное имя пользователя." +msgstr "Введите действительное место назначения" #: plinth/modules/email_server/forms.py:24 -#, fuzzy -#| msgid "Domain" msgid "domain" -msgstr "Домен" +msgstr "домен" #: plinth/modules/email_server/forms.py:38 -#, fuzzy -#| msgid "Primary connection" msgid "Primary domain" -msgstr "Основное соединение" +msgstr "Основной домен" #: plinth/modules/email_server/forms.py:40 msgid "" "Mails are received for all domains configured in the system. Among these, " "select the most important one." msgstr "" +"Почта принимается для всех доменов, настроенных в системе. Среди них " +"выберите наиболее важный." #: plinth/modules/email_server/forms.py:48 msgid "New alias (without @domain)" -msgstr "" +msgstr "Новый псевдоним (без @домена)" #: plinth/modules/email_server/forms.py:55 msgid "Contains illegal characters" -msgstr "" +msgstr "Содержит недопустимые символы" #: plinth/modules/email_server/forms.py:58 msgid "Must start and end with a-z or 0-9" -msgstr "" +msgstr "Должен начинаться и заканчиваться на a-z или 0-9" #: plinth/modules/email_server/forms.py:61 msgid "Cannot be a number" -msgstr "" +msgstr "Не может быть числом" #: plinth/modules/email_server/forms.py:71 -#, fuzzy -#| msgid "Manage Libraries" msgid "Aliases" -msgstr "Управление библиотеками" +msgstr "Псевдонимы" #: plinth/modules/email_server/forms.py:83 #: plinth/modules/firewall/templates/firewall.html:54 @@ -2146,63 +2117,49 @@ msgstr "Roundcube" #: plinth/modules/email_server/manifest.py:16 #: plinth/modules/radicale/manifest.py:36 -#, fuzzy -#| msgid "Mozilla Thunderbird" msgid "Thunderbird" -msgstr "Mozilla Thunderbird" +msgstr "Thunderbird" #: plinth/modules/email_server/manifest.py:33 msgid "K-9 Mail" -msgstr "" +msgstr "K-9 Mail" #: plinth/modules/email_server/manifest.py:48 msgid "FairEmail" -msgstr "" +msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:13 #: plinth/modules/email_server/templates/email_server.html:20 -#, fuzzy -#| msgid "Manage Libraries" msgid "Manage Aliases" -msgstr "Управление библиотеками" +msgstr "Управление псевдонимами" #: plinth/modules/email_server/templates/email_alias.html:16 msgid "You have no email aliases." -msgstr "" +msgstr "У вас нет псевдонимов электронной почты." #: plinth/modules/email_server/templates/email_alias.html:24 -#, fuzzy -#| msgid "Disabled" msgid "Disable" -msgstr "Выключено" +msgstr "Выключить" #: plinth/modules/email_server/templates/email_alias.html:26 -#, fuzzy -#| msgid "Enabled" msgid "Enable" -msgstr "Включено" +msgstr "Включить" #: plinth/modules/email_server/templates/email_alias.html:32 -#, fuzzy -#| msgid "Create a new backup" msgid "Create a new email alias" -msgstr "Создать новую резервную копию" +msgstr "Создать новый псевдоним электронной почты" #: plinth/modules/email_server/templates/email_alias.html:38 msgid "Add" msgstr "Добавить" #: plinth/modules/email_server/templates/email_server.html:15 -#, fuzzy -#| msgid "Manage Snapshots" msgid "Manage Spam" -msgstr "Управление снапшотами" +msgstr "Управление спамом" #: plinth/modules/email_server/templates/email_server.html:26 -#, fuzzy -#| msgid "Service Type" msgid "Service Alert" -msgstr "Тип службы" +msgstr "Сервисное оповещение" #: plinth/modules/email_server/templates/email_server.html:46 msgid "Repair" @@ -2211,11 +2168,11 @@ msgstr "Исправление" #: plinth/modules/email_server/views.py:73 #, python-brace-format msgid "Internal error in {0}" -msgstr "" +msgstr "Внутренняя ошибка в {0}" #: plinth/modules/email_server/views.py:76 msgid "Check syslog for more information" -msgstr "" +msgstr "Проверьте syslog для получения дополнительной информации" #: plinth/modules/firewall/__init__.py:26 #, python-brace-format @@ -2874,11 +2831,6 @@ msgid "Anonymous Torrents" msgstr "Анонимные торренты" #: plinth/modules/i2p/views.py:16 -#, fuzzy -#| msgid "" -#| "I2P lets you browse the Internet and hidden services (eepsites) " -#| "anonymously. For this, your browser, preferably a Tor Browser, needs to " -#| "be configured for a proxy." msgid "" "I2P lets you browse the Internet and hidden services (eepsites) anonymously. " "For this, your browser, preferably the Tor Browser, needs to be configured " @@ -3115,7 +3067,7 @@ msgstr "Сертификаты" #: plinth/modules/letsencrypt/__init__.py:98 msgid "Cannot test: No domains are configured." -msgstr "" +msgstr "Невозможно провести тестирование: Не настроены домены." #: plinth/modules/letsencrypt/templates/letsencrypt.html:24 msgid "Domain" @@ -3241,6 +3193,9 @@ msgid "" "Matrix Synapse needs a STUN/TURN server for audio/video calls. Install the " "Coturn app or configure an external server." msgstr "" +"Matrix Synapse необходим сервер STUN/TURN для аудио/видео звонков. " +"Установите приложение Coturn или настройте " +"внешний сервер." #: plinth/modules/matrixsynapse/__init__.py:70 msgid "Matrix Synapse" @@ -3267,6 +3222,9 @@ msgid "" "server for Matrix Synapse. Disable this if you want to use a different STUN/" "TURN server." msgstr "" +"Настраивает локальное приложение coturn в " +"качестве сервера STUN/TURN для Matrix Synapse. Отключите это, если вы хотите " +"использовать другой сервер STUN/TURN." #: plinth/modules/matrixsynapse/manifest.py:12 msgid "Element" @@ -3697,19 +3655,14 @@ msgstr "" "открытым исходным кодом." #: plinth/modules/mumble/__init__.py:28 -#, fuzzy -#| 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." msgid "" "You can connect to your Mumble server on the regular Mumble port 64738. Clients to connect to Mumble from your " "desktop and mobile devices are available." msgstr "" -"Вы можете подключится к серверу Mumble используя стандартный для него порт: " -"64738. На Клиенты вы можете найти " -"клиенты для вашего компьютера и Android устройств." +"Вы можете подключиться к серверу Mumble через обычный порт Mumble 64738. Клиенты для подключения к Mumble с " +"настольных и мобильных устройств так же доступны." #: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" @@ -3838,22 +3791,28 @@ msgid "" "Automatic (DHCP): Configure automatically, use Internet connection from this " "network" msgstr "" +"Автоматически (DHCP): Настройте автоматически, используйте подключение к " +"Интернету из этой сети" #: plinth/modules/networks/forms.py:44 msgid "" "Shared: Act as a router, provide Internet connection to other devices on " "this network" msgstr "" +"Совместное использование: Действует как маршрутизатор, обеспечивает " +"подключение к Интернету других устройств в этой сети" #: plinth/modules/networks/forms.py:47 plinth/modules/networks/forms.py:85 msgid "" "Manual: Use manually specified parameters, use Internet connection from this " "network" msgstr "" +"Вручную: Использовать параметры, заданные вручную, использовать подключение " +"к Интернету из этой сети" #: plinth/modules/networks/forms.py:50 msgid "Disabled: Do not configure this addressing method" -msgstr "" +msgstr "Отключено: Не настраивать этот метод адресации" #: plinth/modules/networks/forms.py:57 msgid "Netmask" @@ -3909,16 +3868,20 @@ msgstr "Метод адресации IPv6" msgid "" "Automatic: Configure automatically, use Internet connection from this network" msgstr "" +"Автоматически: Настроить автоматически, использовать подключение к Интернету " +"из этой сети" #: plinth/modules/networks/forms.py:82 msgid "" "Automatic (DHCP only): Configure automatically, use Internet connection from " "this network" msgstr "" +"Автоматически (только DHCP): Настроить автоматически, использовать " +"подключение к Интернету из этой сети" #: plinth/modules/networks/forms.py:87 msgid "Ignore: Ignore this addressing method" -msgstr "" +msgstr "Игнорировать: Игнорировать этот метод адресации" #: plinth/modules/networks/forms.py:92 msgid "Prefix" @@ -4210,6 +4173,10 @@ msgid "" "that you have other means to access %(box_name)s before altering this " "connection." msgstr "" +"Это основное соединение, на которое полагается %(box_name)s для подключения " +"к Интернету. Его изменение может сделать ваш %(box_name)s недоступным. " +"Убедитесь, что у вас есть другие средства доступа к %(box_name)s, прежде чем " +"изменять это соединение." #: plinth/modules/networks/templates/connection_show.html:36 msgid "Edit connection" @@ -4651,20 +4618,16 @@ msgstr "" "чтобы %(box_name)s предоставлял услуги." #: plinth/modules/networks/templates/router_configuration_content.html:32 -#, fuzzy -#| msgid "" -#| "If you don't have control over your router, choose not to configure it. " -#| "To see options to overcome this limitation, choose 'no public address' " -#| "option in Internet connection type selection." msgid "" "If you don't have control over your router, choose not to configure it. To " "see options to overcome this limitation, choose 'I dont have a public IP " "address' option in Internet connection type selection." msgstr "" -"Если у вас нет контроля над маршрутизатором, не настраивайте его. Чтобы " -"увидеть варианты преодоления этого ограничения, выберите опцию 'без " -"публичного адреса' в выборе типа подключения к Интернету." +"Если у вас нет контроля над маршрутизатором, выберите не настраивать его. " +"Чтобы увидеть варианты преодоления этого ограничения, выберите опцию 'У меня " +"нет публичного IP-адреса' в Выбор типа интернет-соединения." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" @@ -4696,206 +4659,159 @@ msgstr "" "задачу." #: plinth/modules/networks/views.py:27 -#, fuzzy -#| msgid "Disabled" msgid "disabled" -msgstr "Выключено" +msgstr "выключено" #: plinth/modules/networks/views.py:28 -#, fuzzy -#| msgid "Automatic" msgid "automatic" -msgstr "Автоматически" +msgstr "автоматически" #: plinth/modules/networks/views.py:29 -#, fuzzy -#| msgctxt "User guide" -#| msgid "Manual" msgid "manual" -msgstr "Руководство" +msgstr "вручную" #: plinth/modules/networks/views.py:30 -#, fuzzy -#| msgid "Shared" msgid "shared" -msgstr "Общее" +msgstr "совместно" #: plinth/modules/networks/views.py:31 msgid "link-local" -msgstr "" +msgstr "локальная ссылка" #: plinth/modules/networks/views.py:37 plinth/modules/networks/views.py:98 #: plinth/modules/networks/views.py:109 msgid "unknown" -msgstr "" +msgstr "неизвестно" #: plinth/modules/networks/views.py:38 -#, fuzzy -#| msgid "Manage" msgid "unmanaged" -msgstr "Управление" +msgstr "неуправляемый" #: plinth/modules/networks/views.py:39 -#, fuzzy -#| msgid "Unavailable Shares" msgid "unavailable" -msgstr "Недоступный общий доступ" +msgstr "недоступно" #: plinth/modules/networks/views.py:40 -#, fuzzy -#| msgid "cable is connected" msgid "disconnected" -msgstr "кабель подключен" +msgstr "отключено" #: plinth/modules/networks/views.py:41 -#, fuzzy -#| msgid "Sharing" msgid "preparing" -msgstr "Общий доступ" +msgstr "подготовка" #: plinth/modules/networks/views.py:42 -#, fuzzy -#| msgid "Connection" msgid "connecting" -msgstr "Подключение" +msgstr "подключение" #: plinth/modules/networks/views.py:43 -#, fuzzy -#| msgid "Use HTTP basic authentication" msgid "needs authentication" -msgstr "Использовать базовую аутентификацию HTTP" +msgstr "требуется аутентификация" #: plinth/modules/networks/views.py:44 msgid "requesting address" -msgstr "" +msgstr "запрашиваемый адрес" #: plinth/modules/networks/views.py:45 msgid "checking" -msgstr "" +msgstr "проверка" #: plinth/modules/networks/views.py:46 msgid "waiting for secondary" -msgstr "" +msgstr "ожидание вторичного" #: plinth/modules/networks/views.py:47 -#, fuzzy -#| msgid "Deactivate" msgid "activated" -msgstr "Отключить" +msgstr "активировано" #: plinth/modules/networks/views.py:48 -#, fuzzy -#| msgid "Deactivate" msgid "deactivating" -msgstr "Отключить" +msgstr "деактивировано" #: plinth/modules/networks/views.py:56 -#, fuzzy -#| msgid "State reason" msgid "no reason" -msgstr "Определение состояния" +msgstr "без причины" #: plinth/modules/networks/views.py:58 msgid "unknown error" -msgstr "" +msgstr "неизвестная ошибка" #: plinth/modules/networks/views.py:60 -#, fuzzy -#| msgid "The device is not mounted." msgid "device is now managed" -msgstr "Устройство не подключено." +msgstr "устройство теперь управляется" #: plinth/modules/networks/views.py:62 -#, fuzzy -#| msgid "The device is not mounted." msgid "device is now unmanaged" -msgstr "Устройство не подключено." +msgstr "устройство теперь не управляется" #: plinth/modules/networks/views.py:64 -#, fuzzy -#| msgid "configuration file: {file}" msgid "configuration failed" -msgstr "Файл настроек: {file}" +msgstr "конфигурация не удалась" #: plinth/modules/networks/views.py:66 msgid "secrets required" -msgstr "" +msgstr "требуются секреты" #: plinth/modules/networks/views.py:68 msgid "DHCP client failed to start" -msgstr "" +msgstr "Клиент DHCP не смог запуститься" #: plinth/modules/networks/views.py:70 msgid "DHCP client error" -msgstr "" +msgstr "Ошибка клиента DHCP" #: plinth/modules/networks/views.py:72 -#, fuzzy -#| msgid "Client deleted." msgid "DHCP client failed" -msgstr "Клиент удалён." +msgstr "Сбой клиента DHCP" #: plinth/modules/networks/views.py:74 msgid "shared connection service failed to start" -msgstr "" +msgstr "не удалось запустить службу общего подключения" #: plinth/modules/networks/views.py:76 -#, fuzzy -#| msgid "The operation failed." msgid "shared connection service failed" -msgstr "Операция не удалась." +msgstr "сбой общей службы подключений" #: plinth/modules/networks/views.py:78 -#, fuzzy -#| msgid "The device is already mounted." msgid "device was removed" -msgstr "Устройство уже подключено." +msgstr "устройство было удалено" #: plinth/modules/networks/views.py:80 -#, fuzzy -#| msgid "The device is mounted by another user." msgid "device disconnected by user" -msgstr "Устройство подключено другим пользователем." +msgstr "устройство отключено пользователем" #: plinth/modules/networks/views.py:82 msgid "a dependency of the connection failed" -msgstr "" +msgstr "не удалось установить зависимость соединения" #: plinth/modules/networks/views.py:84 -#, fuzzy -#| msgid "Client not found" msgid "Wi-Fi network not found" -msgstr "Клиент не найден" +msgstr "Сеть Wi-Fi не найдена" #: plinth/modules/networks/views.py:86 -#, fuzzy -#| msgid "The operation failed." msgid "a secondary connection failed" -msgstr "Операция не удалась." +msgstr "вторичное соединение не удалось" #: plinth/modules/networks/views.py:88 msgid "new connection activation was enqueued" -msgstr "" +msgstr "активация нового соединения поставлена в очередь" #: plinth/modules/networks/views.py:90 msgid "a duplicate IP address was detected" -msgstr "" +msgstr "обнаружен дубликат IP-адреса" #: plinth/modules/networks/views.py:92 msgid "selected IP method is not supported" -msgstr "" +msgstr "выбранный метод IP не поддерживается" #: plinth/modules/networks/views.py:101 #, fuzzy #| msgid "Generic" msgid "generic" -msgstr "Универсальный" +msgstr "универсальный" #: plinth/modules/networks/views.py:102 -#, fuzzy -#| msgid "Network Interface" msgid "TUN or TAP interface" -msgstr "Сетевой интерфейс" +msgstr "Интерфейс TUN или TAP" #: plinth/modules/networks/views.py:103 plinth/modules/wireguard/__init__.py:49 #: plinth/modules/wireguard/manifest.py:14 @@ -4903,28 +4819,20 @@ msgid "WireGuard" msgstr "WireGuard" #: plinth/modules/networks/views.py:110 -#, fuzzy -#| msgid "Ad-hoc" msgid "ad-hoc" -msgstr "Беспроводная Ad-hoc" +msgstr "ad-hoc" #: plinth/modules/networks/views.py:111 -#, fuzzy -#| msgid "Infrastructure" msgid "infrastructure" -msgstr "Инфраструктура" +msgstr "инфраструктура" #: plinth/modules/networks/views.py:112 -#, fuzzy -#| msgid "Access Point" msgid "access point" -msgstr "Точка доступа" +msgstr "точка доступа" #: plinth/modules/networks/views.py:113 -#, fuzzy -#| msgid "Access Point" msgid "mesh point" -msgstr "Точка доступа" +msgstr "точка mesh" #: plinth/modules/networks/views.py:127 msgid "Network Connections" @@ -5013,10 +4921,8 @@ msgstr "" "дополнительной безопасности и анонимности." #: plinth/modules/openvpn/__init__.py:55 -#, fuzzy -#| msgid "Connection to Server" msgid "Connect to VPN services" -msgstr "Подключение к серверу" +msgstr "Подключение к службам VPN" #: plinth/modules/openvpn/__init__.py:58 plinth/modules/openvpn/manifest.py:17 msgid "OpenVPN" @@ -5040,7 +4946,7 @@ msgstr "Tunnelblick" #: plinth/modules/openvpn/templates/migrate_to_ecc.html:7 msgid "Migrate to ECC" -msgstr "" +msgstr "Миграция на ECC" #: plinth/modules/openvpn/templates/migrate_to_ecc.html:10 msgid "" @@ -5049,6 +4955,10 @@ msgid "" "security. This operation is irreversible. It should only take a few minutes " "on most single board computers." msgstr "" +"Ваша установка OpenVPN в настоящее время использует RSA. Переход на " +"современную криптографию Elliptic Curve Cryptography повышает скорость " +"установления соединения и безопасность. Эта операция необратима. Она должна " +"занять всего несколько минут на большинстве одноплатных компьютеров." #: plinth/modules/openvpn/templates/migrate_to_ecc.html:19 #, python-format @@ -5056,6 +4966,8 @@ msgid "" "All new installations of OpenVPN on %(box_name)s will use ECC by default. We " "recommend migrating as soon as possible." msgstr "" +"Все новые установки OpenVPN на %(box_name)s будут использовать ECC по " +"умолчанию. Мы рекомендуем выполнить миграцию как можно скорее." #: plinth/modules/openvpn/templates/migrate_to_ecc.html:26 #, python-format @@ -5065,12 +4977,14 @@ msgid "" "profiles. OpenVPN clients compatible with ECC should be used to connect to " "this server." msgstr "" +"Предупреждение: Существующие профили клиентов будут аннулированы этой " +"операцией. Все пользователи OpenVPN на %(box_name)s должны загрузить свои " +"новые профили. Для подключения к этому серверу следует использовать клиенты " +"OpenVPN, совместимые с ECC." #: plinth/modules/openvpn/templates/migrate_to_ecc.html:38 -#, fuzzy -#| msgid "Moderate" msgid "Migrate" -msgstr "Умеренный" +msgstr "Мигрировать" #: plinth/modules/openvpn/templates/openvpn.html:22 msgid "Profile" @@ -5360,8 +5274,6 @@ msgid "Restart" msgstr "Перезапустить" #: plinth/modules/power/templates/power.html:25 -#, fuzzy -#| msgid "Shut down" msgid "Shut Down" msgstr "Завершить работу" @@ -5776,10 +5688,8 @@ msgid "Action" msgstr "Действие" #: plinth/modules/samba/views.py:33 -#, fuzzy -#| msgid "FreedomBox" msgid "FreedomBox OS disk" -msgstr "FreedomBox" +msgstr "Диск ОС FreedomBox" #: plinth/modules/samba/views.py:59 plinth/modules/storage/forms.py:146 msgid "Open Share" @@ -5941,21 +5851,21 @@ msgid "" "There are %(count)s reported security vulnerabilities in the FreedomBox app, " "which provides the core services and user interface for a FreedomBox server." msgstr "" +"Имеются %(count)s сообщений об уязвимостях безопасности в приложении " +"FreedomBox, которое предоставляет основные услуги и пользовательский " +"интерфейс для сервера FreedomBox." #: plinth/modules/security/templates/security_report.html:19 -#, fuzzy -#| msgid "" -#| "The following table lists the current reported number, and historical " -#| "count, of security vulnerabilities for each installed app." msgid "" "The following table lists the current reported number of security " "vulnerabilities for each installed app. More information on the " "vulnerabilities can be found on the Debian Security Bug Tracker." msgstr "" -"В следующей таблице перечислены текущее зарегистрированное количество и " -"историческое количество уязвимостей безопасности для каждого установленного " -"приложения." +"В следующей таблице перечислено текущее количество сообщений об уязвимостях " +"безопасности для каждого установленного приложения. Более подробную " +"информацию об уязвимостях можно найти на Debian Security Bug Tracker." #: plinth/modules/security/templates/security_report.html:28 msgid "" @@ -6145,10 +6055,8 @@ msgid "Make files in this folder available to anyone with the link." msgstr "Сделайте файлы в этой папке доступными для всех, у кого есть ссылка." #: plinth/modules/sharing/forms.py:34 -#, fuzzy -#| msgid "User groups that can read the files in the share" msgid "User groups that can read the files in the share:" -msgstr "Группы пользователей, которые могут читать файлы в общей папке" +msgstr "Группы пользователей, которые могут читать файлы в общей папке:" #: plinth/modules/sharing/forms.py:36 msgid "" @@ -6396,18 +6304,16 @@ msgid "Rollback to Snapshot #%(number)s" msgstr "Откат к снимку %(number)s" #: plinth/modules/snapshot/views.py:27 -#, fuzzy -#| msgid "Library created." msgid "manually created" -msgstr "Библиотека создана." +msgstr "создано вручную" #: plinth/modules/snapshot/views.py:28 msgid "timeline" -msgstr "" +msgstr "временная шкала" #: plinth/modules/snapshot/views.py:29 msgid "apt" -msgstr "" +msgstr "apt" #: plinth/modules/snapshot/views.py:39 msgid "Manage Snapshots" @@ -7012,7 +6918,7 @@ msgstr "" #: plinth/modules/transmission/__init__.py:27 msgid "Please do not change the default port of the Transmission daemon." -msgstr "" +msgstr "Пожалуйста, не изменяйте порт по умолчанию демона Transmission." #: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 @@ -7085,10 +6991,8 @@ msgstr "" #: plinth/modules/upgrades/__init__.py:129 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 -#, fuzzy -#| msgid "Software Upgrades" msgid "Software Update" -msgstr "Обновления программного обеспечения" +msgstr "Обновление программного обеспечения" #: plinth/modules/upgrades/__init__.py:132 msgid "FreedomBox Updated" @@ -7096,7 +7000,7 @@ msgstr "FreedomBox обновлён" #: plinth/modules/upgrades/__init__.py:217 msgid "Could not start distribution update" -msgstr "" +msgstr "Не удалось запустить обновление дистрибутива" #: plinth/modules/upgrades/__init__.py:219 msgid "" @@ -7104,17 +7008,20 @@ msgid "" "distribution update. Please ensure at least 5 GB is free. Distribution " "update will be retried after 24 hours, if enabled." msgstr "" +"В корневом разделе недостаточно свободного места для запуска обновления " +"дистрибутива. Пожалуйста, убедитесь, что свободно не менее 5 ГБ. Обновление " +"дистрибутива будет повторно запущено через 24 часа, если это включено." #: plinth/modules/upgrades/__init__.py:230 -#, fuzzy -#| msgid "Automatic upgrades disabled" msgid "Distribution update started" -msgstr "Автоматические обновления отключены" +msgstr "Началось обновление дистрибутива" #: plinth/modules/upgrades/__init__.py:232 msgid "" "Started update to next stable release. This may take a long time to complete." msgstr "" +"Начато обновление до следующего стабильного выпуска. Это может занять много " +"времени." #: plinth/modules/upgrades/forms.py:15 msgid "Enable auto-update" @@ -7126,16 +7033,16 @@ msgstr "" "Если опция включена, то FreedomBox автоматически обновляется раз в день." #: plinth/modules/upgrades/forms.py:19 -#, fuzzy -#| msgid "Enable auto-update" msgid "Enable auto-update to next stable release" -msgstr "Включить автообновление" +msgstr "Включить автообновление до следующего стабильного выпуска" #: plinth/modules/upgrades/forms.py:20 msgid "" "When enabled, FreedomBox will update to the next stable distribution release " "when it is available." msgstr "" +"Если эта функция включена, FreedomBox будет обновляться до следующего " +"стабильного выпуска дистрибутива, когда он будет доступен." #: plinth/modules/upgrades/forms.py:34 #: plinth/modules/upgrades/templates/upgrades_configure.html:89 @@ -7143,10 +7050,8 @@ msgid "Activate frequent feature updates (recommended)" msgstr "Активировать частые обновления функций (рекомендуется)" #: plinth/modules/upgrades/forms.py:40 -#, fuzzy -#| msgid "Fail2Ban (recommended)" msgid "Update now (recommended)" -msgstr "Fail2ban (рекомендуется)" +msgstr "Обновить сейчас (рекомендуется)" #: plinth/modules/upgrades/templates/backports-firstboot.html:26 msgid "" @@ -7165,40 +7070,33 @@ msgstr "" "нельзя деактивировать." #: plinth/modules/upgrades/templates/update-firstboot-progress.html:19 -#, fuzzy -#| msgid "Updating..." msgid "Updating, please wait..." -msgstr "Обновляется..." +msgstr "Обновление, подождите..." #: plinth/modules/upgrades/templates/update-firstboot-progress.html:22 #: plinth/modules/upgrades/templates/update-firstboot.html:20 -#, fuzzy -#| msgid "" -#| "This may take a long time to complete. During an update, " -#| "you cannot install apps. Also, this web interface may be temporarily " -#| "unavailable and show an error. In that case, refresh the page to continue." msgid "" "This may take a long time to complete. During an update, " "this web interface may be temporarily unavailable and show an error. In that " "case, refresh the page to continue." msgstr "" "Для завершения может потребоваться много времени. Во время " -"обновления вы не можете устанавливать приложения. Веб-интерфейс может быть " -"временно недоступен и показывать ошибку. В таком случае, чтобы продолжить, " -"обновите страницу." +"обновления веб-интерфейс может быть временно недоступен и показывать ошибку. " +"В таком случае, чтобы продолжить, обновите страницу." #: plinth/modules/upgrades/templates/update-firstboot-progress.html:31 -#, fuzzy, python-format -#| msgid "%(box_name)s is up to date." +#, python-format msgid "" "\n" "\t%(box_name)s is up to date. Press Next to continue.\n" " " -msgstr "%(box_name)s в актуальном состоянии." +msgstr "" +"\n" +"\t%(box_name)s в актуальном состоянии. Нажмите \"Далее\", чтобы продолжить.\n" +" " #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 -#, fuzzy, python-format -#| msgid "%(box_name)s Updated" +#, python-format msgid "%(box_name)s updated" msgstr "%(box_name)s обновлён" @@ -7292,16 +7190,12 @@ msgid "Automatic upgrades disabled" msgstr "Автоматические обновления отключены" #: plinth/modules/upgrades/views.py:82 -#, fuzzy -#| msgid "Automatic upgrades enabled" msgid "Distribution upgrade enabled" -msgstr "Автоматические обновления включены" +msgstr "Обновление дистрибутива включено" #: plinth/modules/upgrades/views.py:85 -#, fuzzy -#| msgid "Automatic upgrades disabled" msgid "Distribution upgrade disabled" -msgstr "Автоматические обновления отключены" +msgstr "Обновление дистрибутива отключено" #: plinth/modules/upgrades/views.py:127 msgid "Upgrade process started." @@ -7709,9 +7603,6 @@ msgid "Use this connection to send all outgoing traffic" msgstr "Используйте это соединение для отправки всего исходящего трафика" #: plinth/modules/wireguard/forms.py:107 -#, fuzzy -#| msgid "" -#| "Typically checked for a VPN service though which all traffic is sent." msgid "Typically checked for a VPN service through which all traffic is sent." msgstr "" "Обычно проверяется на наличие службы VPN, через которую отправляется весь " @@ -7938,6 +7829,11 @@ msgid "" "Administration interface and produced web pages are suitable for mobile " "devices." msgstr "" +"WordPress - это популярный способ создания и управления веб-сайтами и " +"блогами. Контентом можно управлять с помощью визуального интерфейса. Макет и " +"функциональность веб-страниц можно настраивать. Внешний вид можно выбрать с " +"помощью тем. Интерфейс администрирования и созданные веб-страницы подходят " +"для мобильных устройств." #: plinth/modules/wordpress/__init__.py:29 #, python-brace-format @@ -7947,6 +7843,11 @@ msgid "" "the correct domain name. Enable permalinks in administrator interface for " "better URLs to your pages and posts." msgstr "" +"Вам нужно запустить настройку WordPress, посетив приложение, прежде чем " +"сделать сайт общедоступным. Программа установки должна быть запущена при " +"доступе к {box_name} с правильным доменным именем. Включите постоянные " +"ссылки в интерфейсе администратора для улучшения URL-адресов ваших страниц и " +"сообщений." #: plinth/modules/wordpress/__init__.py:34 msgid "" @@ -7954,6 +7855,10 @@ msgid "" "during setup. Bookmark the admin page " "to reach administration interface in the future." msgstr "" +"WordPress имеет свои собственные учетные записи пользователей. Первая " +"учетная запись администратора создается во время установки. Сделайте " +"закладку на страницу администратора, " +"чтобы в будущем иметь доступ к интерфейсу администрирования." #: plinth/modules/wordpress/__init__.py:38 msgid "" @@ -7961,31 +7866,31 @@ msgid "" "from administrator interface. Additional plugins or themes may be installed " "and upgraded at your own risk." msgstr "" +"После крупного обновления версии необходимо вручную запустить обновление " +"базы данных из интерфейса администратора. Дополнительные плагины или темы " +"могут быть установлены и обновлены на ваш страх и риск." #: plinth/modules/wordpress/__init__.py:58 #: plinth/modules/wordpress/manifest.py:6 -#, fuzzy -#| msgid "Address" msgid "WordPress" -msgstr "Адрес" +msgstr "WordPress" #: plinth/modules/wordpress/__init__.py:59 -#, fuzzy -#| msgid "Wiki and Blog" msgid "Website and Blog" -msgstr "Вики и Блог" +msgstr "Сайт и блог" #: plinth/modules/wordpress/forms.py:14 -#, fuzzy -#| msgid "public access" msgid "Public access" -msgstr "публичный доступ" +msgstr "Публичный доступ" #: plinth/modules/wordpress/forms.py:15 msgid "" "Allow all visitors. Disabling allows only administrators to view the " "WordPress site or blog. Enable only after performing initial WordPress setup." msgstr "" +"Разрешить всех посетителей. Отключение позволяет только администраторам " +"просматривать сайт или блог WordPress. Включайте только после первоначальной " +"настройки WordPress." #: plinth/modules/zoph/__init__.py:26 #, python-brace-format @@ -7999,6 +7904,16 @@ msgid "" "location using search, map and calendar views. Individual photos can be " "shared with others by sending a direct link." msgstr "" +"Zoph управляет вашей коллекцией фотографий. Фотографии хранятся на вашем " +"{box_name}, под вашим контролем. Вместо того чтобы сосредоточиться на " +"галереях для публичного показа, Zoph фокусируется на управлении ими для " +"вашего собственного использования, организуя их по тому, кто их сделал, где " +"они были сделаны и кто на них изображен. Фотографии могут быть связаны с " +"несколькими иерархическими альбомами и категориями. С помощью поиска, карты " +"и календаря легко найти все фотографии, содержащие человека, или фотографии, " +"сделанные в определенную дату, или фотографии, сделанные в определенном " +"месте. Отдельными фотографиями можно поделиться с другими, отправив прямую " +"ссылку." #: plinth/modules/zoph/__init__.py:37 #, python-brace-format @@ -8007,31 +7922,34 @@ msgid "" "Zoph. For additional users, accounts must be created both in {box_name} and " "in Zoph with the same user name." msgstr "" +"Пользователь {box_name}, установивший Zoph, также станет администратором в " +"Zoph. Для дополнительных пользователей необходимо создать учетные записи как " +"в {box_name}, так и в Zoph с тем же именем пользователя." #: plinth/modules/zoph/__init__.py:58 plinth/modules/zoph/manifest.py:6 msgid "Zoph" -msgstr "" +msgstr "Zoph" #: plinth/modules/zoph/__init__.py:59 msgid "Photo Organizer" -msgstr "" +msgstr "Организатор фотографий" #: plinth/modules/zoph/forms.py:14 msgid "Enable OpenStreetMap for maps" -msgstr "" +msgstr "Включить OpenStreetMap для карт" #: plinth/modules/zoph/forms.py:15 msgid "" "When enabled, requests will be made to OpenStreetMap servers from user's " "browser. This impacts privacy." msgstr "" +"Если эта функция включена, запросы к серверам OpenStreetMap будут " +"выполняться из браузера пользователя. Это влияет на конфиденциальность." #: plinth/modules/zoph/templates/zoph-pre-setup.html:15 #: plinth/modules/zoph/templates/zoph-pre-setup.html:28 -#, fuzzy -#| msgid "Start Setup" msgid "Setup" -msgstr "Запуск программы установки" +msgstr "Настройка" #: plinth/modules/zoph/templates/zoph-pre-setup.html:18 #, python-format @@ -8039,6 +7957,8 @@ msgid "" "User account %(username)s will become the administrator " "account for Zoph." msgstr "" +"Учетная запись пользователя %(username)s станет учетной " +"записью администратора для Zoph." #: plinth/network.py:29 msgid "PPPoE" @@ -8051,7 +7971,7 @@ msgstr "Универсальный" #: plinth/package.py:94 #, python-brace-format msgid "Package {package_name} is the latest version ({latest_version})" -msgstr "" +msgstr "Пакет {package_name} последней версией ({latest_version})" #: plinth/package.py:245 msgid "Error during installation" @@ -8330,7 +8250,7 @@ msgstr "" #: plinth/templates/messages.html:11 msgid "Close" -msgstr "" +msgstr "Закрыть" #: plinth/templates/notifications-dropdown.html:11 msgid "Notifications" @@ -8407,7 +8327,7 @@ msgstr "Это приложение в настоящее время недос #: plinth/templates/setup.html:50 msgid "Check again" -msgstr "" +msgstr "Проверить еще раз" #: plinth/templates/setup.html:55 msgid "" @@ -8415,6 +8335,9 @@ msgid "" "conflict with the installation of this app. The following packages will be " "removed if you proceed:" msgstr "" +"Конфликтующие пакеты: Некоторые пакеты, установленные в " +"системе, конфликтуют с установкой этого приложения. Следующие пакеты будут " +"удалены, если вы продолжите установку:" #: plinth/templates/setup.html:71 msgid "Install" From ff266854f220ba5eb93e0732b82bec00dec3ed55 Mon Sep 17 00:00:00 2001 From: Andrij Mizyk Date: Fri, 28 Jan 2022 13:44:06 +0000 Subject: [PATCH 20/35] Translated using Weblate (Ukrainian) Currently translated at 79.1% (1146 of 1447 strings) --- plinth/locale/uk/LC_MESSAGES/django.po | 50 ++++++++------------------ 1 file changed, 14 insertions(+), 36 deletions(-) diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 85cce35d9..8524f1615 100644 --- a/plinth/locale/uk/LC_MESSAGES/django.po +++ b/plinth/locale/uk/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-11 19:11-0500\n" -"PO-Revision-Date: 2021-11-19 11:51+0000\n" +"PO-Revision-Date: 2022-01-29 13:55+0000\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.9.1-dev\n" +"X-Generator: Weblate 4.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -480,11 +480,7 @@ msgid "Existing Backups" msgstr "Наявні резервні копії" #: plinth/modules/backups/templates/backups_add_remote_repository.html:19 -#, fuzzy, python-format -#| msgid "" -#| "The credentials for this repository are stored on your %(box_name)s.
To restore a backup on a new %(box_name)s you need the ssh credentials " -#| "and, if chosen, the encryption passphrase." +#, python-format msgid "" "The credentials for this repository are stored on your %(box_name)s.
" "To restore a backup on a new %(box_name)s you need the SSH credentials and, " @@ -492,7 +488,7 @@ msgid "" msgstr "" "Облікові дані для цього репозиторію зберігаються на Вашому %(box_name)s. " "
Щоб відновити резервну копію на новому %(box_name)s Вам потрібні " -"облікові дані до ssh та, якщо вибрано, парольна фраза для шифрування." +"облікові дані до SSH та, якщо вибрано, парольна фраза для шифрування." #: plinth/modules/backups/templates/backups_add_remote_repository.html:28 msgid "Create Location" @@ -646,19 +642,14 @@ msgid "How to verify?" msgstr "Як перевірити?" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:45 -#, fuzzy -#| msgid "" -#| "Run the following command on the SSH host machine. The output should " -#| "match one of the provided options. You can also use dsa, ecdsa, ed25519 " -#| "etc. instead of rsa, by choosing the corresponding file." msgid "" "Run the following command on the SSH host machine. The output should match " "one of the provided options. You can also use DSA, ECDSA, Ed25519 etc. " "instead of RSA, by choosing the corresponding file." msgstr "" -"Запустіть наступні команди на машині, що розміщує SSH. Вивід має відповідати " -"одному з наведених параметрів. Ви також можете використовувати dsa, ecdsa, " -"ed25519 і т.п. замість rsa, обравши відповідний файл." +"Запустіть наступні команди на машині, яка розміщує SSH. Вивід має " +"відповідати одному з наведених параметрів. Ви також можете використовувати " +"DSA, ECDSA, Ed25519 і т.п. замість RSA, обравши відповідний файл." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:60 msgid "Verify Host" @@ -2025,8 +2016,6 @@ msgid "Enter a valid domain" msgstr "Уведіть коректний домен" #: plinth/modules/email_server/forms.py:20 -#, fuzzy -#| msgid "Enter a valid username." msgid "Enter a valid destination" msgstr "Уведіть коректне розташування" @@ -2035,10 +2024,8 @@ msgid "domain" msgstr "домен" #: plinth/modules/email_server/forms.py:38 -#, fuzzy -#| msgid "Primary connection" msgid "Primary domain" -msgstr "Основне зʼєднання" +msgstr "Основний домен" #: plinth/modules/email_server/forms.py:40 msgid "" @@ -4314,11 +4301,6 @@ msgstr "" "він перенаправляв увесь отриманий трафік до сервісів, які надає %(box_name)s." #: plinth/modules/networks/templates/router_configuration_content.html:32 -#, fuzzy -#| msgid "" -#| "If you don't have control over your router, choose not to configure it. " -#| "To see options to overcome this limitation, choose 'no public address' " -#| "option in Internet connection type selection." msgid "" "If you don't have control over your router, choose not to configure it. To " "see options to overcome this limitation, choose 'I dont have a public IP " @@ -4326,8 +4308,9 @@ msgid "" "\">Internet connection type selection." msgstr "" "Якщо Ви не контролюєте свій маршрутизатор, не налаштовуйте його. Щоб " -"побачити способи обходу цього обмеження, оберіть параметр 'немає публічної " -"адреси' під час вибору типу зʼєднання з Інтернетом." +"побачити способи обходу цього обмеження, оберіть параметр 'Я не маю " +"публічної IP-адреси' під час вибору типу зʼєднання з Інтернетом." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" @@ -6428,10 +6411,8 @@ msgstr "" "BitTorrent не анонімний." #: plinth/modules/transmission/__init__.py:27 -#, fuzzy -#| msgid "Please do not change the default port of the transmission daemon." msgid "Please do not change the default port of the Transmission daemon." -msgstr "Будь ласка, не змінюйте типовий порт демона transmission." +msgstr "Будь ласка, не змінюйте типовий порт демона Transmission." #: plinth/modules/transmission/__init__.py:53 #: plinth/modules/transmission/manifest.py:6 @@ -6498,10 +6479,8 @@ msgstr "" #: plinth/modules/upgrades/__init__.py:129 #: plinth/modules/upgrades/templates/update-firstboot-progress.html:11 #: plinth/modules/upgrades/templates/update-firstboot.html:11 -#, fuzzy -#| msgid "Server URL updated" msgid "Software Update" -msgstr "URL сервера оновлено" +msgstr "Оновлення ПЗ" #: plinth/modules/upgrades/__init__.py:132 msgid "FreedomBox Updated" @@ -6597,8 +6576,7 @@ msgstr "" " " #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 -#, fuzzy, python-format -#| msgid "%(box_name)s Updated" +#, python-format msgid "%(box_name)s updated" msgstr "%(box_name)s оновлено" From a1521e5d0add6a415e486047d5364c46f0c2256e Mon Sep 17 00:00:00 2001 From: Benedek Nagy Date: Thu, 27 Jan 2022 21:37:43 +0000 Subject: [PATCH 21/35] Translated using Weblate (Hungarian) Currently translated at 100.0% (1447 of 1447 strings) --- plinth/locale/hu/LC_MESSAGES/django.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 860cde1e9..350ee65f8 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-11 19:11-0500\n" -"PO-Revision-Date: 2022-01-16 22:55+0000\n" +"PO-Revision-Date: 2022-01-29 13:55+0000\n" "Last-Translator: Benedek Nagy \n" "Language-Team: Hungarian \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 4.10.1\n" +"X-Generator: Weblate 4.11-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" @@ -557,7 +557,7 @@ msgstr "Letöltés" #: plinth/modules/backups/templates/backups_restore.html:27 #: plinth/modules/backups/views.py:206 msgid "Restore" -msgstr "Visszaállít" +msgstr "Visszaállítás" #: plinth/modules/backups/templates/backups_repository.html:109 msgid "No archives currently exist." From 5e4a0f0a38c844a81513f1e6e093e3add4a8e661 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 20 Jan 2022 13:46:45 -0800 Subject: [PATCH 22/35] cockpit: Explicitly redirect to HTTPS as needed for WebSockets Cockpit uses WebSockets which won't work without HTTPS. For .onion domains, we are not explicitly redirecting to HTTPS since TLS is not necessary. Ensure that Cockpit continues to work with .onion domains by explicitly redirecting to HTTPS. Tests: - Without the patch, on a normal/Onion domain run curl -kv http://{DOMAIN}/_cockpit/. Redirection does not happen. - With the patch, on a normal/Onion domain run curl -kv http://{DOMAIN}/_cockpit/. Redirection happen to https:// occurs. - Redirection is a with HTTP status code 302, the temporary redirection code. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../data/etc/apache2/conf-available/cockpit-freedombox.conf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plinth/modules/cockpit/data/etc/apache2/conf-available/cockpit-freedombox.conf b/plinth/modules/cockpit/data/etc/apache2/conf-available/cockpit-freedombox.conf index 001c2537f..495037bbe 100644 --- a/plinth/modules/cockpit/data/etc/apache2/conf-available/cockpit-freedombox.conf +++ b/plinth/modules/cockpit/data/etc/apache2/conf-available/cockpit-freedombox.conf @@ -8,6 +8,12 @@ ## mod_proxy_wstunnel ## + # Redirect to HTTPS in case of not already using it. This can happen since + # we don't redirect for .onion domains. + RewriteEngine on + ReWriteCond %{HTTPS} !=on + RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L] + ProxyPass http://localhost:9090/_cockpit/ From 4fc1844d895cda3bb40ae2d90a3c510fa51cbac1 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 20 Jan 2022 15:10:26 -0800 Subject: [PATCH 23/35] apache: Don't set HSTS for .onion domain Fixes: #2174. When HSTS is set, there is no way to override the certificate warnings. LE does not yet issue certificates for .onion domains. Certificate warnings are certainly show there. Although browsers don't accept HSTS headers when the certificate is invalid, it is best be safe and not set them for .onion domains. Tests: - Without the patch, on normal and .onion domains, HSTS is set only when using HTTPS. - With the patch, HSTS is set only when using HTTPS but only for normal domains but not .onion domains. - The patch works when tested with .onion and .ONION hosts. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- data/etc/apache2/conf-available/freedombox.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data/etc/apache2/conf-available/freedombox.conf b/data/etc/apache2/conf-available/freedombox.conf index a2feaf114..9a484e8e2 100644 --- a/data/etc/apache2/conf-available/freedombox.conf +++ b/data/etc/apache2/conf-available/freedombox.conf @@ -34,7 +34,9 @@ ## ## Enable HSTS, even for subdomains. ## -Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS + + Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS + ## ## Redirect traffic on home to /plinth as part of turning the machine From 09ba3892e8075773b744bb935d78ed8c56de282b Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 22 Jan 2022 19:15:00 -0800 Subject: [PATCH 24/35] wireguard: tests: Add functional tests Add HTML classes to help with functional testing. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- .../wireguard/templates/wireguard.html | 9 +- .../templates/wireguard_add_client.html | 2 +- .../templates/wireguard_add_server.html | 2 +- .../templates/wireguard_delete_client.html | 2 +- .../templates/wireguard_delete_server.html | 2 +- .../templates/wireguard_edit_client.html | 2 +- .../templates/wireguard_edit_server.html | 2 +- .../templates/wireguard_show_client.html | 20 +- .../templates/wireguard_show_server.html | 20 +- .../wireguard/tests/test_functional.py | 194 ++++++++++++++++++ plinth/modules/wireguard/utils.py | 2 +- pyproject.toml | 1 + 12 files changed, 227 insertions(+), 31 deletions(-) create mode 100644 plinth/modules/wireguard/tests/test_functional.py diff --git a/plinth/modules/wireguard/templates/wireguard.html b/plinth/modules/wireguard/templates/wireguard.html index 1227189ea..d670179fd 100644 --- a/plinth/modules/wireguard/templates/wireguard.html +++ b/plinth/modules/wireguard/templates/wireguard.html @@ -57,7 +57,7 @@
{% trans "Add Allowed Client" %} @@ -82,8 +82,9 @@ {% for peer in server.peers.values %} {% if forloop.first %} - {{ peer.endpoint }} - + {{ peer.endpoint }} + {{ peer.public_key }} @@ -107,7 +108,7 @@ - + {% csrf_token %} {{ title }} - + {% csrf_token %} {{ form|bootstrap }} diff --git a/plinth/modules/wireguard/templates/wireguard_edit_server.html b/plinth/modules/wireguard/templates/wireguard_edit_server.html index 946d0b6ba..641b7d458 100644 --- a/plinth/modules/wireguard/templates/wireguard_edit_server.html +++ b/plinth/modules/wireguard/templates/wireguard_edit_server.html @@ -10,7 +10,7 @@

{{ title }}

- + {% csrf_token %} {{ form|bootstrap }} diff --git a/plinth/modules/wireguard/templates/wireguard_show_client.html b/plinth/modules/wireguard/templates/wireguard_show_client.html index 1aa363fda..739c57808 100644 --- a/plinth/modules/wireguard/templates/wireguard_show_client.html +++ b/plinth/modules/wireguard/templates/wireguard_show_client.html @@ -17,19 +17,19 @@
- + - + - + - + - + @@ -49,15 +49,15 @@
{% trans "Client public key:" %} {{ client.public_key }}
{% trans "IP address to use for client:" %} {{ client.allowed_ips|join:", " }}
{% trans "Pre-shared key:" %} {{ client.preshared_key }}
{% trans "Server endpoints:" %} {% for endpoint in endpoints %} @@ -37,7 +37,7 @@ {% endfor %}
{% trans "Server public key:" %} {{ server.public_key }}
- + - + - + @@ -66,12 +66,12 @@
{% trans "Data transmitted:" %} {{ client.status.transfer_tx|filesizeformat }}
{% trans "Data received:" %} {{ client.status.transfer_rx|filesizeformat }}
{% trans "Latest handshake:" %} {{ client.status.latest_handshake|default:'' }}
- + - + - + - + - + @@ -48,15 +48,15 @@
{% trans "Server endpoint:" %} {{ peer.endpoint }}
{% trans "Server public key:" %} {{ peer.public_key }}
{% trans "Pre-shared key:" %} {{ peer.preshared_key }}
{% trans "Public key of this machine:" %} {{ server.public_key }}
{% trans "IP address of this machine:" %} {{ server.ip_address }}
- + - + - + @@ -67,12 +67,12 @@ {% endfor %}
- {% trans "Edit" %} - {% trans "Delete" %} diff --git a/plinth/modules/wireguard/tests/test_functional.py b/plinth/modules/wireguard/tests/test_functional.py new file mode 100644 index 000000000..df5b0ec37 --- /dev/null +++ b/plinth/modules/wireguard/tests/test_functional.py @@ -0,0 +1,194 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Functional, browser based tests for wireguard app. +""" + +import urllib + +import pytest + +from plinth.tests import functional + +pytestmark = [pytest.mark.apps, pytest.mark.wireguard] + + +class TestWireguardApp(functional.BaseAppTests): + app_name = 'wireguard' + has_web = False + + _client_public_key1 = '8dlHfuAsU0WsnpQkNd8fguwmBtFX5/CkO0xYKbNBt24=' + _client_public_key2 = 'xM/vyXbYtMf9bDTZY3W2x7Moxw4m1ckpnZvVSd4DLho=' + + _server = [ + { + 'peer_endpoint': 'wg1.example.org:1234', + 'peer_public_key': 'HBCqZk4B93N6q19zNleJkAVs+PEfWAPgPpKnrhL/CVw=', + 'ip_address': '10.0.0.2', + 'private_key': '', + 'preshared_key': '' + }, + { + 'peer_endpoint': 'wg2.example.org:5678', + 'peer_public_key': 'Z/iHo0vaeSN8Ykk5KwhQ819MMU5nyzD7y7xFFthlxXI=', + 'ip_address': '192.168.0.2', + 'private_key': 'QC2xEZMn3bgNsSVFrU51+ALSUiUaWg6gRWigh3EeVm0=', + 'preshared_key': 'AHxZ4Rr8Ij4L1aq+ceusSIgBfluqiI9Vb5I2UtQFanI=' + }, + ] + + def test_backup_restore(self, session_browser): + """Skip the test.""" + pytest.skip('Does not implement backup/restore.') + + @staticmethod + def _get_client_href(key): + """Return the href for client show page.""" + key = urllib.parse.quote(urllib.parse.quote(key, safe='')) + return f'/plinth/apps/wireguard/client/{key}/show/' + + def _client_exists(self, browser, key): + """Check whether a client key exists.""" + functional.nav_to_module(browser, 'wireguard') + href = browser.links.find_by_href(self._get_client_href(key)) + return bool(href) + + def _assert_client_details(self, browser, key): + """Check that the client's details are correct.""" + + def get_value(key): + return browser.find_by_css(f'tr.{key} > td').first.text + + functional.nav_to_module(browser, 'wireguard') + href = browser.links.find_by_href(self._get_client_href(key)) + href.first.click() + assert get_value('client-public-key') == key + + @staticmethod + def _add_client(browser, key): + """Add a client.""" + functional.nav_to_module(browser, 'wireguard') + browser.find_by_css('.btn-add-client').first.click() + browser.find_by_id('id_public_key').fill(key) + functional.submit(browser, form_class='form-add-client') + + def _edit_client(self, browser, key1, key2): + """Edit a client""" + functional.nav_to_module(browser, 'wireguard') + browser.links.find_by_href(self._get_client_href(key1)).first.click() + browser.find_by_css('.btn-edit-client').first.click() + browser.find_by_id('id_public_key').fill(key2) + functional.submit(browser, form_class='form-edit-client') + + def _delete_client(self, browser, key): + """Delete a client""" + functional.nav_to_module(browser, 'wireguard') + browser.links.find_by_href(self._get_client_href(key)).first.click() + browser.find_by_css('.btn-delete-client').first.click() + functional.submit(browser, form_class='form-delete-client') + + def test_add_edit_delete_client(self, session_browser): + """Test adding, editing and deleting a WireGuard client.""" + if self._client_exists(session_browser, self._client_public_key1): + self._delete_client(session_browser, self._client_public_key1) + + if self._client_exists(session_browser, self._client_public_key2): + self._delete_client(session_browser, self._client_public_key2) + + self._add_client(session_browser, self._client_public_key1) + assert self._client_exists(session_browser, self._client_public_key1) + + self._edit_client(session_browser, self._client_public_key1, + self._client_public_key2) + assert not self._client_exists(session_browser, + self._client_public_key1) + assert self._client_exists(session_browser, self._client_public_key2) + + self._delete_client(session_browser, self._client_public_key2) + assert not self._client_exists(session_browser, + self._client_public_key2) + + @staticmethod + def _get_server_href(browser, key): + """Return the href for server show page.""" + return browser.find_by_css( + f'.peer-public-key[data-public-key="{key}"] a') + + def _server_exists(self, browser, config): + """Check whether a server key exists.""" + functional.nav_to_module(browser, 'wireguard') + href = self._get_server_href(browser, config['peer_public_key']) + return bool(href) + + def _assert_server_details(self, browser, config): + """Check that the server's details are correct.""" + + def get_value(key): + return browser.find_by_css(f'tr.{key} > td').first.text + + functional.nav_to_module(browser, 'wireguard') + href = self._get_server_href(browser, config['peer_public_key']) + href.first.click() + assert get_value('peer-endpoint') == config['peer_endpoint'] + assert get_value('peer-public-key') == config['peer_public_key'] + assert get_value('server-ip-address') == config['ip_address'] + assert get_value('peer-preshared-key') == (config['preshared_key'] + or 'None') + + @staticmethod + def _add_server(browser, config): + """Add a server.""" + functional.nav_to_module(browser, 'wireguard') + browser.find_by_css('.btn-add-server').first.click() + browser.find_by_id('id_peer_endpoint').fill(config['peer_endpoint']) + browser.find_by_id('id_peer_public_key').fill( + config['peer_public_key']) + browser.find_by_id('id_ip_address').fill(config['ip_address']) + browser.find_by_id('id_private_key').fill(config['private_key']) + browser.find_by_id('id_preshared_key').fill(config['preshared_key']) + functional.submit(browser, form_class='form-add-server') + + def _edit_server(self, browser, config1, config2): + """Edit a server.""" + functional.nav_to_module(browser, 'wireguard') + self._get_server_href(browser, + config1['peer_public_key']).first.click() + browser.find_by_css('.btn-edit-server').first.click() + browser.find_by_id('id_peer_endpoint').fill(config2['peer_endpoint']) + browser.find_by_id('id_peer_public_key').fill( + config2['peer_public_key']) + browser.find_by_id('id_ip_address').fill(config2['ip_address']) + browser.find_by_id('id_private_key').fill(config2['private_key']) + browser.find_by_id('id_preshared_key').fill(config2['preshared_key']) + functional.submit(browser, form_class='form-edit-server') + + def _delete_server(self, browser, config): + """Delete a server""" + functional.nav_to_module(browser, 'wireguard') + self._get_server_href(browser, config['peer_public_key']).first.click() + browser.find_by_css('.btn-delete-server').first.click() + functional.submit(browser, form_class='form-delete-server') + + def test_add_edit_delete_server(self, session_browser): + """Test adding, editing and deleting a WireGuard server.""" + if self._server_exists(session_browser, self._server[0]): + self._delete_server(session_browser, self._server[0]) + + if self._server_exists(session_browser, self._server[1]): + self._delete_server(session_browser, self._server[1]) + + self._add_server(session_browser, self._server[0]) + self._assert_server_details(session_browser, self._server[0]) + + # XXX: Editing the connection is very flaky. Fails, incorrect and + # crashes. Fix it. + + # self._edit_server(session_browser, self._server[0], + # self._server[1]) assert not self._server_exists(session_browser, + # self._server[0]) self._assert_server_details(session_browser, + # self._server[1]) + + # self._delete_server(session_browser, self._server[1]) + # assert not self._server_exists(session_browser, self._server[1]) + + self._delete_server(session_browser, self._server[0]) + assert not self._server_exists(session_browser, self._server[0]) diff --git a/plinth/modules/wireguard/utils.py b/plinth/modules/wireguard/utils.py index e76689d19..114c91241 100644 --- a/plinth/modules/wireguard/utils.py +++ b/plinth/modules/wireguard/utils.py @@ -169,7 +169,7 @@ def add_server(settings): def edit_server(interface, settings): - """Edit information for a connecting to a server.""" + """Edit information for connecting to a server.""" settings['common']['interface'] = interface settings['common']['name'] = 'WireGuard-Client-' + interface if not settings['wireguard']['private_key']: diff --git a/pyproject.toml b/pyproject.toml index ab06abf5f..79690006f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,6 +65,7 @@ markers = [ "ttrss", "upgrades", "users", + "wireguard", "wordpress", "zoph", ] From fc4a9183bdaa77146d18a605087bd5ef9a12798f Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 25 Jan 2022 20:31:37 -0800 Subject: [PATCH 25/35] snapshots: Clarify that snapshots are take during updates too Closes: #1917. Tests: - The UI message got updated. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/snapshot/forms.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plinth/modules/snapshot/forms.py b/plinth/modules/snapshot/forms.py index 5b5fda117..298e745aa 100644 --- a/plinth/modules/snapshot/forms.py +++ b/plinth/modules/snapshot/forms.py @@ -24,9 +24,9 @@ class SnapshotForm(forms.Form): 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'))]) + help_text=_('Enable or disable snapshots before and after each ' + 'software installation and update.'), + choices=[('yes', _('Enabled')), ('no', _('Disabled'))]) hourly_limit = forms.IntegerField( label=_('Hourly Snapshots Limit'), min_value=0, From 78d78d84a713c674f5fbe781ae4efeb9a43e9717 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Mon, 24 Jan 2022 19:54:58 -0800 Subject: [PATCH 26/35] coturn: Use wildcard listening address to fix startup issues Fixes: #2069. Without a listening port, coturn will try to enumerate the non-local IP addresses and try to listen on them. If coturn is started before network is fully setup, it finds no usable IP addresses and fails. Furthermore, if IPs are added to the system, it does not automatically listen on them. A better approach as advised by systemd NetworkTarget documentation is to listen on a wildcard address. This does not require network to be online and works well for IP addresses being added/removed from the system. coturn is itself unable to make changes to its default listening behavior for backward compatibility. Tests: - Freshly install coturn. Observe that listening-ip is properly set in the configuration file. coturn is listening on 3478, 3479, 5349, 5350. coturn is listening on ::1 and * addresses instead of individual IP addresses. - Install coturn without the patch. Apply the patch and restart FreedomBox. coturn setup will run. listening-ips get added to the configuration file. The static-auth-secret is not changed from earlier. coturn will be restarted. coturn is listening on 3478, 3479, 5349, 5350. coturn is listening on ::1 and * addresses instead of individual IP addresses. - Install coturn without the patch. Disable coturn. Apply the patch and restart FreedomBox. coturn setup will run. coturn will not be enabled. coturn will be running after setup. - Functional tests pass. - All ports able to connect using netcat (nc command) with IPv4 (-4 option) and IPv6 (-6 option). Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/coturn | 9 +++++++-- plinth/modules/coturn/__init__.py | 6 ++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/actions/coturn b/actions/coturn index e50f2af14..38a2e1719 100755 --- a/actions/coturn +++ b/actions/coturn @@ -46,11 +46,9 @@ def subcommand_setup(_): shutil.chown(CONFIG_FILE, group='turnserver') action_utils.service_daemon_reload() - action_utils.service_try_restart('coturn') aug = augeas_load() - # XXX: Should we set listen, relay IP address to :: or dynamically # XXX: Should we set external-ip aug.set(_key_path('min-port'), '49152') aug.set(_key_path('max-port'), '50175') @@ -66,9 +64,16 @@ def subcommand_setup(_): aug.set(_key_path('no-tlsv1'), 'true') aug.set(_key_path('no-tlsv1_1'), 'true') aug.set(_key_path('no-cli'), 'true') + aug.set(_key_path('listening-ip[1]'), '::') + # Keep ::1 because at least two IP addresses of same class are needed for + # enabling alternate port (port + 1). This is in turn needed for NAT + # Behavior Discovery (RFC 5780). + aug.set(_key_path('listening-ip[2]'), '::1') aug.save() + action_utils.service_try_restart('coturn') + def subcommand_get_config(_): """Return the current configuration in JSON format.""" diff --git a/plinth/modules/coturn/__init__.py b/plinth/modules/coturn/__init__.py index 390e8e274..7ccb8afe3 100644 --- a/plinth/modules/coturn/__init__.py +++ b/plinth/modules/coturn/__init__.py @@ -47,7 +47,7 @@ class CoturnApp(app_module.App): app_id = 'coturn' - _version = 1 + _version = 2 def __init__(self): """Create components for the app.""" @@ -112,7 +112,9 @@ def setup(helper, old_version=None): """Install and configure the module.""" app.setup(old_version) helper.call('post', actions.superuser_run, 'coturn', ['setup']) - helper.call('post', app.enable) + if old_version == 0: + helper.call('post', app.enable) + app.get_component('letsencrypt-coturn').setup_certificates() notify_configuration_change() From 5ff7339c19ee15ef8e928083ee4a4a69638588f4 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 25 Jan 2022 19:55:45 -0800 Subject: [PATCH 27/35] sso, users: Redirect to home page after logout Closes: #2178. - Don't bother with the redirection to the next page using the ?next= URL parameter. Always redirect to the home (index) page. - Show a message that logout was successful. - Ensure that SSO cookie is removed. Tests: - Logout and notice that redirection has been performed to the home page. - "Logged out successfully." message is shown. - When logged as a user with a language set, logging out preserves the language of the user who was just logged out. - Login. Click logout while having browser developer tool open. Notice that Logout request has SSO cookie. The response does not have the cookie set. The next request is to the home page and it does not have SSO cookie in the request. - Login to tt-rss app that needs SSO to work. Logout from FreedomBox interface using another page. Refresh the tt-rss page and notice that user was logged out and redirect to FreedomBox login page. - Logout. Again, manually visit the URL https://10.42.0.203/plinth/accounts/logout/. The page is still required to home page and success is still shown even though the user is already logged out. - Repeat the logout test as non-admin user. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/sso/views.py | 22 ++++++++++++---------- plinth/modules/users/urls.py | 8 +++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/plinth/modules/sso/views.py b/plinth/modules/sso/views.py index d84984a96..6415f545a 100644 --- a/plinth/modules/sso/views.py +++ b/plinth/modules/sso/views.py @@ -9,9 +9,13 @@ import urllib import axes.utils from axes.decorators import axes_form_invalid +from django import shortcuts +from django.contrib import messages from django.contrib.auth import REDIRECT_FIELD_NAME -from django.contrib.auth.views import LoginView, LogoutView +from django.contrib.auth import logout as auth_logout +from django.contrib.auth.views import LoginView from django.http import HttpResponseRedirect +from django.utils.translation import gettext as _ from plinth import actions, translation, utils, web_framework @@ -89,15 +93,13 @@ class CaptchaLoginView(LoginView): return set_ticket_cookie(request.user, response) -class SSOLogoutView(LogoutView): - """View to log out of FreedomBox and remove the auth_pubtkt cookie.""" - template_name = 'index.html' - - def dispatch(self, request, *args, **kwargs): - response = super(SSOLogoutView, self).dispatch(request, *args, - **kwargs) - response.delete_cookie(SSO_COOKIE_NAME) - return response +def logout(request): + """Logout an authenticated user, remove SSO cookie and redirect to home.""" + auth_logout(request) + response = shortcuts.redirect('index') + response.delete_cookie(SSO_COOKIE_NAME) + messages.success(request, _('Logged out successfully.')) + return response def refresh(request): diff --git a/plinth/modules/users/urls.py b/plinth/modules/users/urls.py index b95391f75..7bce71b59 100644 --- a/plinth/modules/users/urls.py +++ b/plinth/modules/users/urls.py @@ -4,11 +4,10 @@ URLs for the Users module """ from axes.decorators import axes_dispatch -from django.urls import re_path, reverse_lazy +from django.urls import re_path from stronghold.decorators import public -from plinth.modules.sso.views import (CaptchaLoginView, SSOLoginView, - SSOLogoutView) +from plinth.modules.sso.views import CaptchaLoginView, SSOLoginView, logout from plinth.utils import non_admin_view from . import views @@ -30,8 +29,7 @@ urlpatterns = [ # axes_dispatch after axes 5.x becomes available in Debian stable. re_path(r'^accounts/login/$', public(axes_dispatch(SSOLoginView.as_view())), name='login'), - re_path(r'^accounts/logout/$', non_admin_view(SSOLogoutView.as_view()), - {'next_page': reverse_lazy('index')}, name='logout'), + re_path(r'^accounts/logout/$', public(logout), name='logout'), re_path(r'^users/firstboot/$', public(views.FirstBootView.as_view()), name='firstboot'), re_path(r'accounts/login/locked/$', public(CaptchaLoginView.as_view()), From 136e70bbd06adb0d567306f50e6dae8008f770b7 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 25 Jan 2022 20:56:08 -0800 Subject: [PATCH 28/35] users: Clarify help message for authorization password Closes: #2081. Tests: - In the create user form, edit user form and change password form, the message is shown as expected. - The create user form, edit user form and change password form work as expected. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/users/forms.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plinth/modules/users/forms.py b/plinth/modules/users/forms.py index aa310ab44..61814b5c5 100644 --- a/plinth/modules/users/forms.py +++ b/plinth/modules/users/forms.py @@ -75,8 +75,14 @@ class PasswordConfirmForm(forms.Form): """Password confirmation form.""" confirm_password = forms.CharField( widget=forms.PasswordInput, - label=gettext_lazy('Authorization Password'), help_text=gettext_lazy( - 'Enter your current password to authorize account modifications.')) + label=gettext_lazy('Authorization Password')) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.fields['confirm_password'].help_text = _( + 'Enter the password for user "{user}" to authorize account ' + 'modifications.').format(user=self.request.user.username) def clean_confirm_password(self): """Check that current user's password matches.""" From 747a5f120f1a3937530cd34fcdfffeaeab100ffe Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 26 Jan 2022 16:43:28 -0800 Subject: [PATCH 29/35] HACKING: Stop using setup.py as a way to run tests Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- HACKING.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/HACKING.md b/HACKING.md index 5f2f230cf..d54b2936f 100644 --- a/HACKING.md +++ b/HACKING.md @@ -344,12 +344,6 @@ To run all the standard unit tests in the container/VM: guest$ py.test-3 ``` -Another way to run tests (not recommended): - -```bash -guest$ ./setup.py test -``` - To run a specific test function, test class or test module, use pytest filtering options. See pytest documentation for further filter options. From 9a2d66c62fc28502a0ef93c0026b42e378e8b384 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 14 Dec 2021 19:00:11 -0800 Subject: [PATCH 30/35] email_server: Drop some unused code Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/audit/ldap.py | 14 -------------- plinth/modules/email_server/forms.py | 14 -------------- 2 files changed, 28 deletions(-) diff --git a/plinth/modules/email_server/audit/ldap.py b/plinth/modules/email_server/audit/ldap.py index e5e5a760c..6a727e490 100644 --- a/plinth/modules/email_server/audit/ldap.py +++ b/plinth/modules/email_server/audit/ldap.py @@ -53,7 +53,6 @@ default_smtps_options = { 'smtpd_relay_restrictions': 'permit_sasl_authenticated,reject' } -MAILSRV_DIR = '/var/lib/plinth/mailsrv' SQLITE_ALIASES = 'sqlite:/etc/postfix/freedombox-aliases.cf' logger = logging.getLogger(__name__) @@ -144,16 +143,3 @@ def action_set_ulookup(): """Handles email_server -i ldap set_ulookup""" with postconf.mutex.lock_all(): fix_alias_maps(check_alias_maps()) - - -def list_find(lst, element, start=None, end=None): - if start is None: - start = 0 - if end is None: - end = len(lst) - if start < 0 or end < 0: - return -1 - try: - return lst.index(element, start, end) - except ValueError: - return -1 diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index 53fac7788..265bfa5dd 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -6,26 +6,12 @@ import re from django import forms from django.core.exceptions import ValidationError -from django.core.validators import RegexValidator from django.utils.translation import gettext_lazy as _ from plinth.modules.names.components import DomainName from . import aliases as aliases_module -domain_validator = RegexValidator(r'^[A-Za-z0-9-\.]+$', - _('Enter a valid domain')) -destination_validator = RegexValidator( - r'^[ -~]+$', # ASCII chars from 32 to 126 - _('Enter a valid destination')) - - -class EmailServerForm(forms.Form): - domain = forms.CharField(label=_('domain'), max_length=256) - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - def _get_domain_choices(): """Double domain entries for inclusion in the choice field.""" From affffddf362fa274b7fa151344e949f5a44f36ea Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 26 Jan 2022 16:39:08 -0800 Subject: [PATCH 31/35] roundcube: Add setting for local connection only When this option is enabled, it would make the interface easy to work with. This is likely what most users would want. Don't break things for users who have already installed roundcube and ensure that local only is disable for them. Tests: - Install roundcube without the patch. Disable the app. Apply patch. Restart service. Notice that roundcube is not re-enabled. - Install roundcube without the patch. Apply patch. Restart service. Notice that roundcube configuration /etc/roundcube/config.inc.php file has been updated and include_once() at the end has been added. The file /etc/roundcube/freedombox-config.php has been added. Local only option is disabled. - Install roundcube freshly with the patch. Local only option is enabled. Open interface. Notice that server option is not presented. - Disable local only option and notice that server field is shown in the interface. Signed-off-by: Sunil Mohan Adapa [jvalleroy: Fix comment] Signed-off-by: James Valleroy Reviewed-by: James Valleroy --- actions/roundcube | 55 ++++++++++++++++++++++++++++ plinth/modules/roundcube/__init__.py | 22 ++++++++++- plinth/modules/roundcube/forms.py | 19 ++++++++++ plinth/modules/roundcube/urls.py | 5 +-- plinth/modules/roundcube/views.py | 34 +++++++++++++++++ 5 files changed, 130 insertions(+), 5 deletions(-) create mode 100644 plinth/modules/roundcube/forms.py create mode 100644 plinth/modules/roundcube/views.py diff --git a/actions/roundcube b/actions/roundcube index 890acb471..02f771d7e 100755 --- a/actions/roundcube +++ b/actions/roundcube @@ -5,9 +5,14 @@ Configuration helper for Roundcube server. """ import argparse +import json +import pathlib +import re from plinth import action_utils +_config_file = pathlib.Path('/etc/roundcube/freedombox-config.php') + def parse_arguments(): """Return parsed command line arguments as dictionary.""" @@ -16,6 +21,11 @@ def parse_arguments(): subparsers.add_parser('pre-install', help='Perform Roundcube pre-install configuration') + subparsers.add_parser('setup', help='Setup basic configuration') + subparsers.add_parser('get-config', help='Print current configuration') + subparser = subparsers.add_parser('set-config', help='Set configuration') + subparser.add_argument('--local-only', choices=['True', 'False'], + help='Set current configuration') subparsers.required = True return parser.parse_args() @@ -29,6 +39,51 @@ def subcommand_pre_install(_): ]) +def subcommand_setup(_): + """Add FreedomBox configuration and include from main configuration.""" + if not _config_file.exists(): + _config_file.write_text(' Date: Wed, 26 Jan 2022 16:41:57 -0800 Subject: [PATCH 32/35] email_server: Drop showing diagnostics/repair and roundcube config Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/modules/email_server/__init__.py | 2 - plinth/modules/email_server/audit/__init__.py | 6 +- plinth/modules/email_server/audit/rcube.py | 90 ------------------- .../etc/roundcube/freedombox_mail.inc.php | 8 -- .../email_server/templates/email_server.html | 48 ---------- plinth/modules/email_server/views.py | 90 +------------------ 6 files changed, 6 insertions(+), 238 deletions(-) delete mode 100644 plinth/modules/email_server/audit/rcube.py delete mode 100644 plinth/modules/email_server/data/etc/roundcube/freedombox_mail.inc.php diff --git a/plinth/modules/email_server/__init__.py b/plinth/modules/email_server/__init__.py index fc10d4d57..7b4065c41 100644 --- a/plinth/modules/email_server/__init__.py +++ b/plinth/modules/email_server/__init__.py @@ -147,7 +147,6 @@ class EmailServerApp(plinth.app.App): results = super().diagnose() results.extend([r.summarize() for r in audit.ldap.get()]) results.extend([r.summarize() for r in audit.spam.get()]) - results.extend([r.summarize() for r in audit.rcube.get()]) return results @@ -179,7 +178,6 @@ def setup(helper, old_version=None): helper.call('post', audit.domain.set_domains) helper.call('post', audit.ldap.repair) helper.call('post', audit.spam.repair) - helper.call('post', audit.rcube.repair) # Reload actions.superuser_run('service', ['reload', 'postfix']) diff --git a/plinth/modules/email_server/audit/__init__.py b/plinth/modules/email_server/audit/__init__.py index e35045731..1dc17ee18 100644 --- a/plinth/modules/email_server/audit/__init__.py +++ b/plinth/modules/email_server/audit/__init__.py @@ -3,8 +3,6 @@ Provides diagnosis and repair of email server configuration issues """ -from . import aliases, domain, home, ldap, models, rcube, spam, tls +from . import aliases, domain, home, ldap, models, spam, tls -__all__ = [ - 'aliases', 'domain', 'home', 'ldap', 'models', 'rcube', 'spam', 'tls' -] +__all__ = ['aliases', 'domain', 'home', 'ldap', 'models', 'spam', 'tls'] diff --git a/plinth/modules/email_server/audit/rcube.py b/plinth/modules/email_server/audit/rcube.py deleted file mode 100644 index 3395a3329..000000000 --- a/plinth/modules/email_server/audit/rcube.py +++ /dev/null @@ -1,90 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -import json -import logging -import os - -from django.utils.translation import gettext_lazy as _ - -from plinth import actions -from plinth.modules.email_server.lock import Mutex -from plinth.modules.email_server.modconf import ConfigInjector - -from . import models - -config_path = '/etc/roundcube/config.inc.php' -boundary_pattern = '//[ ]*--[ ]*(BEGIN|END)[ ]+FREEDOMBOX CONFIG$' -boundary_format = '//-- {} FREEDOMBOX CONFIG' - -rconf_template = """// -// The following section is managed by FreedomBox -// Be careful not to edit -include_once("/etc/roundcube/freedombox_mail.inc.php"); -""" - -logger = logging.getLogger(__name__) -rcube_mutex = Mutex('rcube-config') - - -def get(): - translation = { - 'rc_installed': _('RoundCube availability'), - 'rc_config_header': _('RoundCube configured for FreedomBox email'), - } - - output = actions.superuser_run('email_server', ['rcube', 'check']) - results = json.loads(output) - for i in range(0, len(results)): - results[i] = models.Diagnosis.from_json(results[i], translation.get) - - return results - - -def repair(): - actions.superuser_run('email_server', ['rcube', 'set_up']) - - -def repair_component(action): - action_to_services = {'set_up': []} - if action not in action_to_services: - return - actions.superuser_run('email_server', ['rcube', action]) - return action_to_services[action] - - -def action_check(): - results = _action_check() - for i in range(0, len(results)): - results[i] = results[i].to_json() - print(json.dumps(results)) - - -def _action_check(): - results = [] - if not os.path.exists(config_path): - diagnosis = models.Diagnosis('rc_installed') - diagnosis.error('Config file was missing') - diagnosis.error('Check that RoundCube has been installed') - results.append(diagnosis) - return results - - diagnosis = models.Diagnosis('rc_config_header', action='set_up') - injector = ConfigInjector(boundary_pattern, boundary_format) - if not injector.has_header_line(config_path): - diagnosis.error('FreedomBox header line was missing') - results.append(diagnosis) - return results - - -def action_set_up(): - with rcube_mutex.lock_all(): - _inject_rcube_config() - - -def _inject_rcube_config(): - if not os.path.exists(config_path): - logger.warning('Roundcube has not been installed') - return - logger.info('Opening rcube config file %s', config_path) - injector = ConfigInjector(boundary_pattern, boundary_format) - injector.do_template_string(rconf_template, config_path) diff --git a/plinth/modules/email_server/data/etc/roundcube/freedombox_mail.inc.php b/plinth/modules/email_server/data/etc/roundcube/freedombox_mail.inc.php deleted file mode 100644 index 62d858db0..000000000 --- a/plinth/modules/email_server/data/etc/roundcube/freedombox_mail.inc.php +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index c963e1cff..b18fdaa54 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -5,11 +5,6 @@ {% load i18n %} -{% block content %} - {{ tabs|safe }} - {{ block.super }} -{% endblock %} - {% block subsubmenu %} {% trans "Manage Spam" %} @@ -20,46 +15,3 @@ {% trans "Manage Aliases" %} {% endblock %} - -{% block extra_content %} - {% if related_diagnostics %} -

{% trans "Service Alert" %}

-
    - {% for model in related_diagnostics %} -
  • - - {{ model.title }} - {% if model.critical_errors %} - {% trans "error" %} - {% elif model.errors %} - {% trans "failed" %} - {% else %} - {% trans "passed" %} - {% endif %} - - {% if model.has_failed and model.action %} - - {% csrf_token %} - - - {% endif %} - -
      - {% for message in model.critical_errors %} -
    • {{ message }}
    • - {% endfor %} - {% for message in model.errors %} -
    • {{ message }}
    • - {% endfor %} -
    - -
  • - {% endfor %} -
- {% endif %} - {{ block.super }} -{% endblock %} diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 3c9e56d27..6a34d89a5 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -4,49 +4,22 @@ Views for the email app. """ from django.contrib import messages -from django.core.exceptions import ValidationError -from django.http import HttpResponseBadRequest -from django.shortcuts import redirect from django.urls import reverse_lazy from django.utils.translation import gettext_lazy as _ -from django.views.generic.base import TemplateView, View +from django.views.generic.base import TemplateView from django.views.generic.edit import FormView -import plinth.actions -import plinth.utils from plinth.views import AppView from . import aliases as aliases_module from . import audit, forms -class ExceptionsMixin(View): - - def render_validation_error(self, validation_error, status=400): - context = self.get_context_data() - context['error'] = validation_error - return self.render_to_response(context, status=status) - - def render_exception(self, exception, status=500): - context = self.get_context_data() - context['error'] = [str(exception)] - return self.render_to_response(context, status=status) - - def catch_exceptions(self, function, request): - try: - return function(request) - except ValidationError as validation_error: - return self.render_validation_error(validation_error) - except Exception as error: - return self.render_exception(error) - - -class EmailServerView(ExceptionsMixin, AppView): +class EmailServerView(AppView): """Server configuration page""" app_id = 'email_server' form_class = forms.DomainForm template_name = 'email_server.html' - audit_modules = ('rcube', ) def get_initial(self): """Return the initial values to populate in the form.""" @@ -55,45 +28,6 @@ class EmailServerView(ExceptionsMixin, AppView): initial['primary_domain'] = domains['primary_domain'] return initial - def get_context_data(self, *args, **kwargs): - context = super().get_context_data(*args, **kwargs) - - dlist = [] - for module_name in self.audit_modules: - self._get_audit_results(module_name, dlist) - dlist.sort(key=audit.models.Diagnosis.sorting_key) - - context['related_diagnostics'] = dlist - return context - - def _get_audit_results(self, module_name, dlist): - try: - results = getattr(audit, module_name).get() - except Exception as e: - title = _('Internal error in {0}').format('audit.' + module_name) - diagnosis = audit.models.Diagnosis(title) - diagnosis.critical(str(e)) - diagnosis.critical(_('Check syslog for more information')) - results = [diagnosis] - - for diagnosis in results: - if diagnosis.action: - diagnosis.action = '%s.%s' % (module_name, diagnosis.action) - if diagnosis.has_failed: - dlist.append(diagnosis) - - def post(self, request): - repair_field = request.POST.get('repair') - if repair_field: - module_name, sep, action_name = repair_field.partition('.') - if not sep or module_name not in self.audit_modules: - return HttpResponseBadRequest('Bad post data') - - self._repair(module_name, action_name) - return redirect(request.path) - - return super().post(request) - def form_valid(self, form): """Update the settings for changed domain values.""" old_data = form.initial @@ -103,27 +37,11 @@ class EmailServerView(ExceptionsMixin, AppView): audit.domain.set_domains(new_data['primary_domain']) messages.success(self.request, _('Configuration updated')) except Exception: - messages.success(self.request, - _('An error occurred during configuration.')) + messages.error(self.request, + _('An error occurred during configuration.')) return super().form_valid(form) - def _repair(self, module_name, action_name): - """Repair the configuration of the given audit module.""" - module = getattr(audit, module_name) - if not hasattr(module, 'repair_component'): - return - - reload_list = [] - try: - reload_list = module.repair_component(action_name) - except Exception: - pass - - for service in reload_list: - # plinth.action_utils.service_reload(service) - plinth.actions.superuser_run('service', ['reload', service]) - class AliasView(FormView): """View to create, list, enable, disable and delete aliases. From 6fcc8dc8e2ef6cb84f2a8394714422c75638f33d Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 31 Jan 2022 19:24:34 -0500 Subject: [PATCH 33/35] locale: Update translation strings Signed-off-by: James Valleroy --- plinth/locale/ar_SA/LC_MESSAGES/django.po | 210 +++++-------- plinth/locale/bg/LC_MESSAGES/django.po | 214 +++++--------- plinth/locale/bn/LC_MESSAGES/django.po | 224 ++++++-------- plinth/locale/cs/LC_MESSAGES/django.po | 299 ++++++++++--------- plinth/locale/da/LC_MESSAGES/django.po | 277 ++++++++--------- plinth/locale/de/LC_MESSAGES/django.po | 298 ++++++++++--------- plinth/locale/django.pot | 210 +++++-------- plinth/locale/el/LC_MESSAGES/django.po | 305 +++++++++---------- plinth/locale/es/LC_MESSAGES/django.po | 311 +++++++++++--------- plinth/locale/fa/LC_MESSAGES/django.po | 262 ++++++++--------- plinth/locale/fake/LC_MESSAGES/django.po | 277 ++++++++--------- plinth/locale/fr/LC_MESSAGES/django.po | 311 +++++++++++--------- plinth/locale/gl/LC_MESSAGES/django.po | 217 ++++++-------- plinth/locale/gu/LC_MESSAGES/django.po | 238 ++++++--------- plinth/locale/hi/LC_MESSAGES/django.po | 286 +++++++++--------- plinth/locale/hu/LC_MESSAGES/django.po | 303 ++++++++++--------- plinth/locale/id/LC_MESSAGES/django.po | 258 ++++++++-------- plinth/locale/it/LC_MESSAGES/django.po | 243 +++++++-------- plinth/locale/ja/LC_MESSAGES/django.po | 210 +++++-------- plinth/locale/kn/LC_MESSAGES/django.po | 210 +++++-------- plinth/locale/lt/LC_MESSAGES/django.po | 210 +++++-------- plinth/locale/nb/LC_MESSAGES/django.po | 300 +++++++++---------- plinth/locale/nl/LC_MESSAGES/django.po | 299 ++++++++++--------- plinth/locale/pl/LC_MESSAGES/django.po | 251 +++++++--------- plinth/locale/pt/LC_MESSAGES/django.po | 238 ++++++--------- plinth/locale/ru/LC_MESSAGES/django.po | 307 ++++++++++--------- plinth/locale/si/LC_MESSAGES/django.po | 210 +++++-------- plinth/locale/sl/LC_MESSAGES/django.po | 231 ++++++--------- plinth/locale/sq/LC_MESSAGES/django.po | 305 +++++++++---------- plinth/locale/sr/LC_MESSAGES/django.po | 217 ++++++-------- plinth/locale/sv/LC_MESSAGES/django.po | 295 ++++++++++--------- plinth/locale/ta/LC_MESSAGES/django.po | 210 +++++-------- plinth/locale/te/LC_MESSAGES/django.po | 278 ++++++++--------- plinth/locale/tr/LC_MESSAGES/django.po | 299 ++++++++++--------- plinth/locale/uk/LC_MESSAGES/django.po | 261 ++++++++-------- plinth/locale/vi/LC_MESSAGES/django.po | 231 ++++++--------- plinth/locale/zh_Hans/LC_MESSAGES/django.po | 248 +++++++--------- plinth/locale/zh_Hant/LC_MESSAGES/django.po | 224 ++++++-------- 38 files changed, 4449 insertions(+), 5328 deletions(-) diff --git a/plinth/locale/ar_SA/LC_MESSAGES/django.po b/plinth/locale/ar_SA/LC_MESSAGES/django.po index 6d88588fe..e65885428 100644 --- a/plinth/locale/ar_SA/LC_MESSAGES/django.po +++ b/plinth/locale/ar_SA/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: aiman an \n" "Language-Team: Arabic (Saudi Arabia) ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4816,10 +4739,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5142,24 +5076,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5366,7 +5304,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5584,6 +5524,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6317,15 +6261,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6334,62 +6280,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6673,15 +6619,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index 15264bcaf..ecd91fe8a 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-22 21:55+0000\n" "Last-Translator: 109247019824 \n" "Language-Team: Bulgarian За да възстановите от архивно копие на %(box_name)s са ви е необходими " +"Данните за достъп до хранилището се съхраняват в устройство „%(box_name)s“." +"
За да възстановите от архивно копие на %(box_name)s са ви е необходими " "данните за достъп през SSH и, ако е избрано шифроване, шифроващата фраза." #: plinth/modules/backups/templates/backups_add_remote_repository.html:28 @@ -805,7 +805,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:102 plinth/modules/users/forms.py:228 +#: plinth/modules/users/forms.py:108 plinth/modules/users/forms.py:234 msgid "Permissions" msgstr "" @@ -888,7 +888,7 @@ msgstr "" msgid "Configuration updated." msgstr "" -#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:41 #: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 #: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 #: plinth/modules/zoph/views.py:72 @@ -978,10 +978,10 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:38 #: plinth/modules/matrixsynapse/views.py:124 plinth/modules/mumble/views.py:28 #: plinth/modules/pagekite/forms.py:78 plinth/modules/quassel/views.py:28 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/roundcube/views.py:32 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 plinth/modules/ttrss/views.py:26 #: plinth/modules/wordpress/views.py:37 msgid "Configuration updated" @@ -1385,18 +1385,15 @@ msgid "Diagnostics" msgstr "" #: plinth/modules/diagnostics/__init__.py:97 -#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "" @@ -1851,76 +1848,56 @@ msgstr "Пощенски сървър" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:69 +#: plinth/modules/email_server/audit/ldap.py:68 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:70 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/rcube.py:31 -msgid "RoundCube availability" -msgstr "" - -#: plinth/modules/email_server/audit/rcube.py:32 -msgid "RoundCube configured for FreedomBox email" -msgstr "" - #: plinth/modules/email_server/audit/spam.py:87 msgid "Inbound and outbound mail filters" msgstr "" -#: plinth/modules/email_server/forms.py:17 -msgid "Enter a valid domain" -msgstr "" - -#: plinth/modules/email_server/forms.py:20 -msgid "Enter a valid destination" -msgstr "" - #: plinth/modules/email_server/forms.py:24 -msgid "domain" -msgstr "" - -#: plinth/modules/email_server/forms.py:38 msgid "Primary domain" msgstr "" -#: plinth/modules/email_server/forms.py:40 +#: plinth/modules/email_server/forms.py:26 msgid "" "Mails are received for all domains configured in the system. Among these, " "select the most important one." msgstr "" -#: plinth/modules/email_server/forms.py:48 +#: plinth/modules/email_server/forms.py:34 msgid "New alias (without @domain)" msgstr "" -#: plinth/modules/email_server/forms.py:55 +#: plinth/modules/email_server/forms.py:41 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:58 +#: plinth/modules/email_server/forms.py:44 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:61 +#: plinth/modules/email_server/forms.py:47 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:71 +#: plinth/modules/email_server/forms.py:57 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:83 +#: plinth/modules/email_server/forms.py:69 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:86 +#: plinth/modules/email_server/forms.py:72 #: plinth/modules/firewall/templates/firewall.html:57 #: plinth/modules/letsencrypt/templates/letsencrypt.html:71 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 @@ -1929,7 +1906,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:52 +#: plinth/modules/roundcube/__init__.py:54 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1948,7 +1925,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:20 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Aliases" msgstr "" @@ -1972,27 +1949,10 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:15 +#: plinth/modules/email_server/templates/email_server.html:10 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:26 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:46 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/views.py:73 -#, python-brace-format -msgid "Internal error in {0}" -msgstr "" - -#: plinth/modules/email_server/views.py:76 -msgid "Check syslog for more information" -msgstr "" - #: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" @@ -2887,10 +2847,14 @@ msgid "" "TURN server." msgstr "" -#: plinth/modules/matrixsynapse/manifest.py:12 +#: plinth/modules/matrixsynapse/manifest.py:14 msgid "Element" msgstr "" +#: plinth/modules/matrixsynapse/manifest.py:48 +msgid "FluffyChat" +msgstr "" + #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 #: plinth/templates/app.html:46 @@ -3189,47 +3153,6 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:23 -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:26 -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:31 -#, python-brace-format -msgid "" -"On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:53 -msgid "Download files using eDonkey applications" -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:56 -#: plinth/modules/mldonkey/manifest.py:11 -msgid "MLDonkey" -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:58 -msgid "Peer-to-peer File Sharing" -msgstr "" - -#: plinth/modules/mldonkey/manifest.py:18 -msgid "KMLDonkey" -msgstr "" - -#: plinth/modules/mldonkey/manifest.py:30 -msgid "AMLDonkey" -msgstr "" - #: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " @@ -4626,11 +4549,11 @@ msgstr "" msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:13 +#: plinth/modules/power/__init__.py:14 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:30 +#: plinth/modules/power/__init__.py:31 msgid "Power" msgstr "" @@ -4829,7 +4752,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:19 +#: plinth/modules/roundcube/__init__.py:21 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4837,7 +4760,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:26 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -4846,7 +4769,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4856,10 +4779,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5182,24 +5116,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5406,7 +5344,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5624,6 +5564,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6359,15 +6303,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6376,62 +6322,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6715,15 +6661,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index 2f53efed1..962150852 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-06-16 07:33+0000\n" "Last-Translator: Oymate \n" "Language-Team: Bengali ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4828,10 +4747,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5156,24 +5086,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5380,7 +5314,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5598,6 +5534,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6331,15 +6271,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6348,62 +6290,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6687,15 +6629,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -7312,6 +7254,16 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "ডোমেন" + +#, fuzzy +#~| msgid "Service/Port" +#~ msgid "Service Alert" +#~ msgstr "সেবা/পোর্ট" + #~ msgid "diaspora*" #~ msgstr "ডায়াসপোরা*" diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index 6b4ef0fdc..f21759755 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-15 16:56+0000\n" "Last-Translator: Jiří Podhorecký \n" "Language-Team: Czech Výběr typu připojení k internetu." +"veřejnou IP adresu“ v Výběr typu připojení k internetu." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" @@ -5222,11 +5137,11 @@ msgstr "" msgid "System Monitoring" msgstr "Monitoring systému" -#: plinth/modules/power/__init__.py:13 +#: plinth/modules/power/__init__.py:14 msgid "Restart or shut down the system." msgstr "Restartovat nebo vypnout systém." -#: plinth/modules/power/__init__.py:30 +#: plinth/modules/power/__init__.py:31 msgid "Power" msgstr "Napájení" @@ -5475,7 +5390,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Nastavení přístupových práv aktualizováno" -#: plinth/modules/roundcube/__init__.py:19 +#: plinth/modules/roundcube/__init__.py:21 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5488,7 +5403,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:24 +#: plinth/modules/roundcube/__init__.py:26 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5502,7 +5417,7 @@ msgstr "" "protokolu IMAP přes SSL (doporučeno) vyplňte pole serveru například " "imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5518,10 +5433,21 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "E-mailový klient" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5894,11 +5820,11 @@ msgstr "Chyba při nastavování omezeného přístupu: {exception}" msgid "Updated security configuration" msgstr "Nastavení zabezpečení aktualizováno" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli umožňuje ukládat a sdílet záložky." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5906,14 +5832,20 @@ msgstr "" "Všimněte si, že Shaarli podporuje pouze jeden uživatelský účet, který je " "třeba nastavit při první návštěvě." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Záložky" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6156,7 +6088,11 @@ msgid "Software Installation Snapshots" msgstr "Zachycené stavy instalace software" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Zapnout nebo vypnout pořizování zachycených stavů před a po instalaci " "software" @@ -6394,6 +6330,12 @@ msgstr "Sdružené přihlášení (SSO)" msgid "Login" msgstr "Přihlášení" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Heslo úspěšně změněno." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7230,15 +7172,18 @@ msgstr "" msgid "Authorization Password" msgstr "Autorizační heslo" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "Zadejte své aktuální heslo a autorizujte změny účtu." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Neplatné heslo." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7252,21 +7197,21 @@ msgstr "" "skupině admin se budou moci přihlásit ke všem službám. Mohou se také " "přihlašovat do systému prostřednictvím SSH a mají práva správce (sudo)." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Vytvoření uživatele LDAP se nezdařilo: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Nepodařilo se přidat nového uživatele do skupiny {group}: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Pověřené SSH klíče" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7276,41 +7221,41 @@ 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Přejmenování LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Odebrání uživatele ze skupiny se nezdařilo." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Přidání uživatele do skupiny se nezdařilo." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "Nepodařilo se vložit SSH klíče." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Nepodařilo se změnit stav uživatele." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Změna hesla LDAP uživatele se nezdařila." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Nepodařilo se přidat nového uživatele do skupiny admin: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Nepodařilo se omezit přístup ke konzole: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Uživatelský účet vytvořen, není jste jím přihlášeni" @@ -7625,15 +7570,15 @@ msgstr "Servery, ke kterým se %(box_name)s připojí:" msgid "Endpoint" msgstr "Koncový bod" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Zatím nejsou nakonfigurována žádná připojení ke vzdáleným serverům." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Přidat nový server" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Přidat připojení k serveru" @@ -8327,6 +8272,76 @@ msgstr "%(percentage)s%% dokončeno" msgid "Gujarati" msgstr "gudžarátština" +#~ msgid "RoundCube availability" +#~ msgstr "Dostupnost RoundCube" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "RoundCube nakonfigurovaný pro e-mailovou schránku FreedomBox" + +#~ msgid "Enter a valid domain" +#~ msgstr "Zadejte platnou doménu" + +#~ msgid "Enter a valid destination" +#~ msgstr "Zadejte platný cíl" + +#~ msgid "domain" +#~ msgstr "doména" + +#~ msgid "Service Alert" +#~ msgstr "Servisní upozornění" + +#~ msgid "Repair" +#~ msgstr "Oprava" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Vnitřní chyba v {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "Další informace získáte v syslog" + +#~ 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 "" +#~ "MLDonkey je aplikace pro peer-to-peer sdílení souborů sloužící pro výměnu " +#~ "velkých souborů. Může se účastnit vícero peer-to-peer sítí, včetně " +#~ "eDonkey, Kademlia, Overnet, BitTorrent a DirectConnect." + +#~ 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 "" +#~ "Uživatelé, kteří jsou členy skupin admin a ed2k ho mohou ovládat " +#~ "prostřednictvím webového rozhraní. Uživatelé ze skupiny admin ho také " +#~ "mohou ovládat prostřednictvím libovolné mobilní či desktopové nadstavby " +#~ "nebo přes rozhraní telnet. Viz příručka." + +#, 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/ ." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Stahovat soubory pomocí eDonkey aplikací" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Pee-to-peer sdílení souborů" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index 0d055f650..e1220f4ac 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Danish /roundcube. " @@ -5567,7 +5472,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:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5584,12 +5489,23 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Email Client" msgstr "Emailklient (Roundcube)" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5959,11 +5875,11 @@ msgstr "Kunne ikke sætte tidszone: {exception}" msgid "Updated security configuration" msgstr "Generel Konfiguration" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli tillader dig at gemme og dele bogmærker." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -5977,16 +5893,22 @@ msgstr "" "shaarli på webserveren. Bemærk at Shaarli kun understøtter en enkelt " "brugerkonto, som skal sættes op ved det første besøg." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 #, fuzzy #| msgid "Bookmarks (Shaarli)" msgid "Bookmarks" msgstr "Bogmærker (Shaarli)" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6217,7 +6139,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -6463,6 +6387,12 @@ msgstr "" msgid "Login" msgstr "Log ind" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Kodeord blev ændret." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7323,17 +7253,19 @@ msgstr "" msgid "Authorization Password" msgstr "Administratorkonto" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Show password" msgid "Invalid password." msgstr "Vis kodeord" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -7355,23 +7287,23 @@ msgstr "" "tjenester. De kan også logge ind på systemet gennem SSH og har " "administratorprivilegier (sudo)." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, fuzzy, python-brace-format #| msgid "Creating LDAP user failed." msgid "Creating LDAP user failed: {error}" msgstr "Kunne ikke oprette LDAP-bruger." -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, fuzzy, python-brace-format #| msgid "Failed to add new user to {group} group." msgid "Failed to add new user to {group} group: {error}" msgstr "Kunne ikke tilføje ny bruger til gruppen {group}." -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7381,46 +7313,46 @@ 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Kunne ikke omdøbe LDAP-bruger." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Kunne ikke fjerne bruger fra gruppe." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Kunne ikke tilføje bruger til gruppe." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Kunne ikke tilføje bruger til gruppe." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Kunne ikke ændre LDAP-kodeord." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, fuzzy, python-brace-format #| msgid "Failed to add new user to admin group." msgid "Failed to add new user to admin group: {error}" msgstr "Kunne ikke tilføje ny bruger til admin-gruppen." -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, fuzzy, python-brace-format #| msgid "Failed to obtain certificate for domain {domain}: {error}" msgid "Failed to restrict console access: {error}" msgstr "" "Fejl ved forsøg på at erhverve certifikatet for domænet {domain}: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Brugerkonto oprettet, du er nu logget ind" @@ -7725,15 +7657,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" @@ -8437,6 +8369,51 @@ msgstr "%(percentage)s%% færdig" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Available Domains" +#~ msgid "RoundCube availability" +#~ msgstr "Tilgængelige Domæner" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid domain" +#~ msgstr "Ugyldigt servernavn" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid destination" +#~ msgstr "Ugyldigt servernavn" + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "Domæne" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "Servicetype" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "MLDonkey" +#~ msgstr "Monkeysphere" + +#, fuzzy +#~| msgid "Enable Shaarli" +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Aktiver Shaarli" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "KMLDonkey" +#~ msgstr "Monkeysphere" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "AMLDonkey" +#~ msgstr "Monkeysphere" + #, fuzzy #~| msgid "Update" #~ msgid "Updates" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index ef04ebe81..c3d706260 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-19 09:56+0000\n" "Last-Translator: ikmaak \n" "Language-Team: German . Bei IMAP über SSL (empfohlen) füllen Sie das Server-Feld aus, z. B. " "imaps://imap.beispiel.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5621,10 +5535,21 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "E-Mail-Client" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -6001,11 +5926,11 @@ msgstr "Fehler beim Setzen des eingeschränkten Zugriffs: {exception}" msgid "Updated security configuration" msgstr "Sicherheitskonfiguration aktualisiert" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli ermöglicht das Speichern und Teilen von Lesezeichen." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6013,14 +5938,20 @@ msgstr "" "Beachten Sie, dass Shaarli nur ein einziges Benutzerkonto unterstützt, das " "Sie bei Ihrem ersten Besuch einrichten müssen." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Lesezeichen" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6268,7 +6199,11 @@ msgid "Software Installation Snapshots" msgstr "Softwareinstallation-Schnappschüsse" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Schnappschüsse vor und nach Softwareinstallationen ein- oder auschalten" @@ -6508,6 +6443,12 @@ msgstr "Einmal-Anmeldung" msgid "Login" msgstr "Anmelden" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Passwort erfolgreich geändert." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7369,16 +7310,19 @@ msgstr "" msgid "Authorization Password" msgstr "Autorisierungs-Passwort" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" "Geben Sie Ihr aktuelles Kennwort ein, um Kontoänderungen zu autorisieren." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Ungültiges Passwort." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7393,22 +7337,22 @@ msgstr "" "allen Diensten anmelden und sie können sich auch über SSH im System anmelden " "und besitzen Administratorrechte (sudo)." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Erstellen des LDAP-Benutzers ist fehlgeschlagen:{error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" "Fehler beim Hinzufügen eines neuen Benutzers zur {group}-Gruppe: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Autorisierte SSH-Schlüssel" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7419,42 +7363,42 @@ msgstr "" "eingeben, einen pro Zeile. Leerzeilen und Zeilen, die mit # beginnen, werden " "ignoriert." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Umbenennen des LDAP-Benutzers fehlgeschlagen." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Entfernen des Benutzers von der Gruppe fehlgeschlagen." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Hinzufügen eines Benutzers zur Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "SSH-Schlüssel kann nicht gesetzt werden." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Fehler beim Ändern des Benutzerstatus." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Ändern des LDAP-Benutzerpassworts ist fehlgeschlagen." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" "Fehler beim Hinzufügen eines neuen Benutzers zur Administratorgruppe: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Fehler beim Einschränken des Konsolenzugriffs: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Benutzerkonto wurde erstellt, Sie sind jetzt angemeldet" @@ -7780,15 +7724,15 @@ msgstr "Server, mit denen %(box_name)s eine Verbindung herstellen:" msgid "Endpoint" msgstr "Endpunkt" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Es sind noch keine Verbindungen zu entfernten Servern konfiguriert." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Neuen Server hinzufügen" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Verbindung zum Server hinzufügen" @@ -8494,6 +8438,78 @@ msgstr "%(percentage)s %% abgeschlossen" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "RoundCube availability" +#~ msgstr "Verfügbarkeit von RoundCube" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "RoundCube konfiguriert für FreedomBox E-Mail" + +#~ msgid "Enter a valid domain" +#~ msgstr "Eine gültige Domain eingeben" + +#~ msgid "Enter a valid destination" +#~ msgstr "Ein gültiges Ziel eingeben" + +#~ msgid "domain" +#~ msgstr "Domain" + +#~ msgid "Service Alert" +#~ msgstr "Service-Warnung" + +#~ msgid "Repair" +#~ msgstr "Reparieren" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Interner Fehler in {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "Prüfen Sie das Syslog für weitere Informationen" + +#~ 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 "" +#~ "MLDonkey ist eine App für Peer-to-Peer Dateitauschbörsen, um große " +#~ "Dateien auszutauschen. Es kann in mehreren Peer-to-Peer-Netzwerken " +#~ "teilnehmen, unter anderem eDonkey, Kademlia, Overnet, BitTorrent und " +#~ "DirectConnect." + +#~ 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 "" +#~ "Benutzer, die zur Gruppe admin und ed2k gehören, können es über die " +#~ "Weboberfläche steuern. Benutzer der Gruppe admin können es auch über eine " +#~ "der separaten mobilen oder Desktop-Frontends oder eine Telnet-" +#~ "Schnittstelle steuern. Siehe Handbuch." + +#, python-brace-format +#~ msgid "" +#~ "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ " +#~ "directory." +#~ msgstr "" +#~ "Auf {box_name} können heruntergeladene Dateien im Verzeichnis /var/lib/" +#~ "mldonkey/ gefunden werden." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Dateien mit eDonkey herunterladen" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Peer-to-Peer-Datenaustausch" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index a3b6fb3da..c0397b3c3 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -760,7 +760,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:102 plinth/modules/users/forms.py:228 +#: plinth/modules/users/forms.py:108 plinth/modules/users/forms.py:234 msgid "Permissions" msgstr "" @@ -843,7 +843,7 @@ msgstr "" msgid "Configuration updated." msgstr "" -#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:41 #: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 #: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 #: plinth/modules/zoph/views.py:72 @@ -933,10 +933,10 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:38 #: plinth/modules/matrixsynapse/views.py:124 plinth/modules/mumble/views.py:28 #: plinth/modules/pagekite/forms.py:78 plinth/modules/quassel/views.py:28 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/roundcube/views.py:32 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 plinth/modules/ttrss/views.py:26 #: plinth/modules/wordpress/views.py:37 msgid "Configuration updated" @@ -1340,18 +1340,15 @@ msgid "Diagnostics" msgstr "" #: plinth/modules/diagnostics/__init__.py:97 -#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "" @@ -1806,76 +1803,56 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:69 +#: plinth/modules/email_server/audit/ldap.py:68 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:70 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/rcube.py:31 -msgid "RoundCube availability" -msgstr "" - -#: plinth/modules/email_server/audit/rcube.py:32 -msgid "RoundCube configured for FreedomBox email" -msgstr "" - #: plinth/modules/email_server/audit/spam.py:87 msgid "Inbound and outbound mail filters" msgstr "" -#: plinth/modules/email_server/forms.py:17 -msgid "Enter a valid domain" -msgstr "" - -#: plinth/modules/email_server/forms.py:20 -msgid "Enter a valid destination" -msgstr "" - #: plinth/modules/email_server/forms.py:24 -msgid "domain" -msgstr "" - -#: plinth/modules/email_server/forms.py:38 msgid "Primary domain" msgstr "" -#: plinth/modules/email_server/forms.py:40 +#: plinth/modules/email_server/forms.py:26 msgid "" "Mails are received for all domains configured in the system. Among these, " "select the most important one." msgstr "" -#: plinth/modules/email_server/forms.py:48 +#: plinth/modules/email_server/forms.py:34 msgid "New alias (without @domain)" msgstr "" -#: plinth/modules/email_server/forms.py:55 +#: plinth/modules/email_server/forms.py:41 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:58 +#: plinth/modules/email_server/forms.py:44 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:61 +#: plinth/modules/email_server/forms.py:47 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:71 +#: plinth/modules/email_server/forms.py:57 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:83 +#: plinth/modules/email_server/forms.py:69 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:86 +#: plinth/modules/email_server/forms.py:72 #: plinth/modules/firewall/templates/firewall.html:57 #: plinth/modules/letsencrypt/templates/letsencrypt.html:71 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 @@ -1884,7 +1861,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:52 +#: plinth/modules/roundcube/__init__.py:54 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1903,7 +1880,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:20 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Aliases" msgstr "" @@ -1927,27 +1904,10 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:15 +#: plinth/modules/email_server/templates/email_server.html:10 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:26 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:46 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/views.py:73 -#, python-brace-format -msgid "Internal error in {0}" -msgstr "" - -#: plinth/modules/email_server/views.py:76 -msgid "Check syslog for more information" -msgstr "" - #: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" @@ -2840,10 +2800,14 @@ msgid "" "TURN server." msgstr "" -#: plinth/modules/matrixsynapse/manifest.py:12 +#: plinth/modules/matrixsynapse/manifest.py:14 msgid "Element" msgstr "" +#: plinth/modules/matrixsynapse/manifest.py:48 +msgid "FluffyChat" +msgstr "" + #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 #: plinth/templates/app.html:46 @@ -3142,47 +3106,6 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:23 -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:26 -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:31 -#, python-brace-format -msgid "" -"On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:53 -msgid "Download files using eDonkey applications" -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:56 -#: plinth/modules/mldonkey/manifest.py:11 -msgid "MLDonkey" -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:58 -msgid "Peer-to-peer File Sharing" -msgstr "" - -#: plinth/modules/mldonkey/manifest.py:18 -msgid "KMLDonkey" -msgstr "" - -#: plinth/modules/mldonkey/manifest.py:30 -msgid "AMLDonkey" -msgstr "" - #: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " @@ -4579,11 +4502,11 @@ msgstr "" msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:13 +#: plinth/modules/power/__init__.py:14 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:30 +#: plinth/modules/power/__init__.py:31 msgid "Power" msgstr "" @@ -4782,7 +4705,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:19 +#: plinth/modules/roundcube/__init__.py:21 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4790,7 +4713,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:26 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -4799,7 +4722,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4809,10 +4732,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5135,24 +5069,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5359,7 +5297,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5577,6 +5517,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6310,15 +6254,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6327,62 +6273,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6666,15 +6612,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 65c2c5313..f12f5dcd4 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-04-14 04:27+0000\n" "Last-Translator: Michalis \n" "Language-Team: Greek imaps://imap." "παράδειγμα.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5691,10 +5594,21 @@ msgstr "" "settings/security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps )." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "Πρόγραμμα-πελάτης ηλεκτρονικού ταχυδρομείου" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -6087,12 +6001,12 @@ msgstr "Σφάλμα κατά τη ρύθμιση περιορισμένης π msgid "Updated security configuration" msgstr "Ενημερώθηκαν οι ρυθμίσεις παραμέτρων ασφαλείας" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" "To Shaarli σας επιτρέπει να αποθηκεύσετε και να μοιραστείτε σελιδοδείκτες." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from \n" "Language-Team: Spanish imaps://" "imap.ejemplo.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5602,10 +5510,21 @@ msgstr "" "google.com/settings/security/lesssecureapps\">https://www.google.com/" "settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "Cliente de correo" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5983,11 +5902,11 @@ msgstr "Error al definir el acceso restringido: {exception}" msgid "Updated security configuration" msgstr "Configuración de seguridad actualizada" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli le permite guardar y compartir marcadores." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5995,14 +5914,20 @@ msgstr "" "Note que Shaarli solo soporta una cuenta de usuaria/o, que debe configurar " "en el primer acceso." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Marcadores" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6245,7 +6170,11 @@ msgid "Software Installation Snapshots" msgstr "Instantáneas de instalación de software" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Active o desactive las instantáneas antes y después de la instalación del " "software" @@ -6482,6 +6411,12 @@ msgstr "Inicio de sesión único" msgid "Login" msgstr "Inicio de sesión" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Clave de acceso cambiada con éxito." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7338,16 +7273,19 @@ msgstr "Obligatorio. Hasta 150 caracteres. Solo letras, números y @/./-/_ ." msgid "Authorization Password" msgstr "Contraseña de autorización" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" "Introduce tu contraseña actual para autorizar modificaciones en la cuenta." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Contraseña no válida." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7362,21 +7300,21 @@ msgstr "" "servicios, también podrán acceder al sistema por SSH con privilegios de " "administración (sudo)." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Ha fallado la creación de usuaria/o LDAP: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Ha fallado añadir usuaria/o nuevo al grupo {group}: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Claves de SSH autorizadas" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7386,41 +7324,41 @@ 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Ha fallado renombrar al o la usuaria LDAP." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 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:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Ha fallado añadir al o la usuaria al grupo." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "No es posible configurar las claves SSH." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Ha fallado al cambiar el estado del usuario." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Ha fallado cambiar la clave del o de la usuaria LDAP." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Ha fallado añadir usuaria/o nueva/o al grupo admin: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Falló al restringir el acceso a la consola: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Creada cuenta de usuaria/o, ya está usted en el sistema" @@ -7740,15 +7678,15 @@ msgstr "Servidores a los que se conectará %(box_name)s:" msgid "Endpoint" msgstr "Extremo" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Todavía no se han configurado conexiones a servidores remotos." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Añadir nuevo servidor" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Añadir conexión a servidor" @@ -8448,6 +8386,85 @@ msgstr "%(percentage)s%% completado" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "unavailable" +#~ msgid "RoundCube availability" +#~ msgstr "indisponible" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "RoundCube configurado para FreedomBox" + +#~ msgid "Enter a valid domain" +#~ msgstr "Indique un nombre de dominio válido" + +#~ msgid "Enter a valid destination" +#~ msgstr "Indique un destino válido" + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "Dominio" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "Tipo de servicio" + +#~ msgid "Repair" +#~ msgstr "Reparar" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Fallo interno en {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "Más información en syslog" + +#~ 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 "" +#~ "MLDonkey es una aplicación para compartir archivos entre pares que se usa " +#~ "para intercambiar archivos grandes. Puede participar en múltiples redes " +#~ "de pares, incluyendo eDonkey, Kademlia, Overnet, BitTorrent y " +#~ "DirectConnect." + +#~ 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 "" +#~ "Los usuarios pertenecientes a los grupos «admin» y «ed2k» pueden " +#~ "controlarla usando la interfaz web. Los usuarios en el grupo «admin» " +#~ "pueden controlarla también a través de cualquiera de las interfaces " +#~ "externas para móvil o escritorio, o de una interfaz «telnet». Vea el " +#~ "manual." + +#, python-brace-format +#~ msgid "" +#~ "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ " +#~ "directory." +#~ msgstr "" +#~ "Los archivos descargados en {box_name} se encuentran en el directorio «/" +#~ "var/lib/mldonkey/»." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Descargar archivos usando aplicaciones para eDonkey" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Compartir archivos entre pares" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index 84cb3c0b9..5fd894e3b 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-09-07 11:34+0000\n" "Last-Translator: Seyed mohammad ali Hosseinifard \n" "Language-Team: Persian ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5357,11 +5267,22 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 #, fuzzy msgid "Email Client" msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5725,24 +5646,28 @@ msgstr "خطا در هنگام تنظیم منطقهٔ زمانی: {exception}" msgid "Updated security configuration" msgstr "پیکربندی عمومی" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5971,7 +5896,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -6213,6 +6140,12 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Partition expanded successfully." +msgid "Logged out successfully." +msgstr "پارتیشن با موفقیت بزرگ شد." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6985,17 +6918,19 @@ msgstr "" msgid "Authorization Password" msgstr "حساب مدیر" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Show password" msgid "Invalid password." msgstr "رمز را نشان بده" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7004,68 +6939,68 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, fuzzy, python-brace-format #| msgid "Creating LDAP user failed." msgid "Creating LDAP user failed: {error}" msgstr "ساختن کاربر LDAP شکست خورد." -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, fuzzy, python-brace-format #| msgid "Failed to add new user to admin group." msgid "Failed to add new user to {group} group: {error}" msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, fuzzy, python-brace-format #| msgid "Failed to add new user to admin group." msgid "Failed to add new user to admin group: {error}" msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, fuzzy, python-brace-format #| msgid "Failed to obtain certificate for domain {domain}: {error}" msgid "Failed to restrict console access: {error}" msgstr "گرفتن گواهی برای دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "حساب کاربری ساخته شد، شما الان وارد سیستم هستید" @@ -7368,15 +7303,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" @@ -8039,6 +7974,43 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Available Domains" +#~ msgid "RoundCube availability" +#~ msgstr "دامنه‌های موجود" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid domain" +#~ msgstr "نام کاربری معتبر نیست" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid destination" +#~ msgstr "نام کاربری معتبر نیست" + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "دامنه" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "نوع سرویس" + +#, fuzzy +#~ msgid "MLDonkey" +#~ msgstr "مانکی‌اسفیر" + +#, fuzzy +#~ msgid "KMLDonkey" +#~ msgstr "مانکی‌اسفیر" + +#, fuzzy +#~ msgid "AMLDonkey" +#~ msgstr "مانکی‌اسفیر" + #, fuzzy #~| msgid "Create..." #~ msgid "Updates" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 4f3b52529..c718228fa 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers /roundcube. " @@ -5665,7 +5570,7 @@ msgstr "" "IMAP.EXAMPLE.COM. FOR IMAP OVER SSL (RECOMMENDED), FILL THE " "SERVER FIELD LIKE IMAPS://IMAP.EXAMPLE.COM." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 #, fuzzy #| msgid "" #| "For Gmail, username will be your Gmail address, password will be your " @@ -5689,12 +5594,23 @@ msgstr "" "lesssecureapps\" >HTTPS://WWW.GOOGLE.COM/SETTINGS/SECURITY/LESSSECUREAPPS)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Email Client" msgstr "EMAIL CLIENT (ROUNDCUBE)" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -6066,11 +5982,11 @@ msgstr "ERROR SETTING TIME ZONE: {exception}" msgid "Updated security configuration" msgstr "GENERAL CONFIGURATION" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "SHAARLI ALLOWS YOU TO SAVE AND SHARE BOOKMARKS." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -6084,16 +6000,22 @@ msgstr "" "a> PATH ON THE WEB SERVER. NOTE THAT SHAARLI ONLY SUPPORTS A SINGLE USER " "ACCOUNT, WHICH YOU WILL NEED TO SETUP ON THE INITIAL VISIT." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "SHAARLI" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 #, fuzzy #| msgid "Bookmarks (Shaarli)" msgid "Bookmarks" msgstr "BOOKMARKS (SHAARLI)" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "SHAARLI" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6324,7 +6246,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -6570,6 +6494,12 @@ msgstr "" msgid "Login" msgstr "LOGIN" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "PASSWORD CHANGED SUCCESSFULLY." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7428,17 +7358,19 @@ msgstr "" msgid "Authorization Password" msgstr "ADMINISTRATOR ACCOUNT" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Show password" msgid "Invalid password." msgstr "SHOW PASSWORD" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -7459,23 +7391,23 @@ 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:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, fuzzy, python-brace-format #| msgid "Creating LDAP user failed." msgid "Creating LDAP user failed: {error}" msgstr "CREATING LDAP USER FAILED." -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, fuzzy, python-brace-format #| msgid "Failed to add new user to {group} group." msgid "Failed to add new user to {group} group: {error}" msgstr "FAILED TO ADD NEW USER TO {group} GROUP." -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7485,45 +7417,45 @@ 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "RENAMING LDAP USER FAILED." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "FAILED TO REMOVE USER FROM GROUP." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "FAILED TO ADD USER TO GROUP." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "FAILED TO ADD USER TO GROUP." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "CHANGING LDAP USER PASSWORD FAILED." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, fuzzy, python-brace-format #| msgid "Failed to add new user to admin group." msgid "Failed to add new user to admin group: {error}" msgstr "FAILED TO ADD NEW USER TO ADMIN GROUP." -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, fuzzy, python-brace-format #| msgid "Failed to obtain certificate for domain {domain}: {error}" msgid "Failed to restrict console access: {error}" msgstr "FAILED TO OBTAIN CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "USER ACCOUNT CREATED, YOU ARE NOW LOGGED IN" @@ -7828,15 +7760,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" @@ -8553,6 +8485,51 @@ msgstr "%(percentage)s%% COMPLETE" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Enable Subdomains" +#~ msgid "RoundCube availability" +#~ msgstr "ENABLE SUBDOMAINS" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid domain" +#~ msgstr "INVALID SERVER NAME" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid destination" +#~ msgstr "INVALID SERVER NAME" + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "DOMAIN" + +#, fuzzy +#~| msgid "Service type" +#~ msgid "Service Alert" +#~ msgstr "SERVICE TYPE" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "MLDonkey" +#~ msgstr "MONKEYSPHERE" + +#, fuzzy +#~| msgid "Enable Shaarli" +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "ENABLE SHAARLI" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "KMLDonkey" +#~ msgstr "MONKEYSPHERE" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "AMLDonkey" +#~ msgstr "MONKEYSPHERE" + #, fuzzy #~| msgid "Update URL" #~ msgid "Updates" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 4ea3c81fa..2dbc22e2d 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-22 21:55+0000\n" "Last-Translator: Coucouf \n" "Language-Team: French Pour restaurer une sauvegarde sur une nouvelle %(box_name)s, vous " -"aurez besoin de ces informations de connexion SSH et, le cas échéant, de la " -"phrase secrète de chiffrement." +"Les informations de connexion à ce dépôt sont stockées sur votre " +"%(box_name)s.
Pour restaurer une sauvegarde sur une nouvelle " +"%(box_name)s, vous aurez besoin de ces informations de connexion SSH et, le " +"cas échéant, de la phrase secrète de chiffrement." #: plinth/modules/backups/templates/backups_add_remote_repository.html:28 msgid "Create Location" @@ -845,7 +845,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:102 plinth/modules/users/forms.py:228 +#: plinth/modules/users/forms.py:108 plinth/modules/users/forms.py:234 msgid "Permissions" msgstr "Permissions" @@ -931,7 +931,7 @@ msgstr "Admin" msgid "Configuration updated." msgstr "Configuration mise à jour." -#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:41 #: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 #: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 #: plinth/modules/zoph/views.py:72 @@ -1029,10 +1029,10 @@ msgstr "Actualiser l’adresse IP et les domaines" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:38 #: plinth/modules/matrixsynapse/views.py:124 plinth/modules/mumble/views.py:28 #: plinth/modules/pagekite/forms.py:78 plinth/modules/quassel/views.py:28 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/roundcube/views.py:32 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 plinth/modules/ttrss/views.py:26 #: plinth/modules/wordpress/views.py:37 msgid "Configuration updated" @@ -1513,18 +1513,15 @@ msgid "Diagnostics" msgstr "Diagnostics" #: plinth/modules/diagnostics/__init__.py:97 -#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "réussi" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "échoué" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "erreur" @@ -2076,43 +2073,23 @@ msgstr "Serveur de courriel" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Propulsé par Postfix, Dovecot & Rspamd" -#: plinth/modules/email_server/audit/ldap.py:69 +#: plinth/modules/email_server/audit/ldap.py:68 msgid "Postfix-Dovecot SASL integration" msgstr "Intégration de l'authentification SASL Postfix-Dovecot" -#: plinth/modules/email_server/audit/ldap.py:70 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix alias maps" msgstr "Table d’alias Postfix" -#: plinth/modules/email_server/audit/rcube.py:31 -msgid "RoundCube availability" -msgstr "Disponibilité de RoundCube" - -#: plinth/modules/email_server/audit/rcube.py:32 -msgid "RoundCube configured for FreedomBox email" -msgstr "Roundcube est configuré pour la gestion de courriels de la FreedomBox" - #: plinth/modules/email_server/audit/spam.py:87 msgid "Inbound and outbound mail filters" msgstr "Filtres de courriels entrants et sortants" -#: plinth/modules/email_server/forms.py:17 -msgid "Enter a valid domain" -msgstr "Entrez un nom de domaine valide" - -#: plinth/modules/email_server/forms.py:20 -msgid "Enter a valid destination" -msgstr "Entrez une destination valide" - #: plinth/modules/email_server/forms.py:24 -msgid "domain" -msgstr "domaine" - -#: plinth/modules/email_server/forms.py:38 msgid "Primary domain" msgstr "Domaine principal" -#: plinth/modules/email_server/forms.py:40 +#: plinth/modules/email_server/forms.py:26 msgid "" "Mails are received for all domains configured in the system. Among these, " "select the most important one." @@ -2120,34 +2097,34 @@ msgstr "" "Les courriels sont reçus pour tous les domaines configurés sur ce système. " "Parmi ces domaines, choisissez le domaine par défaut." -#: plinth/modules/email_server/forms.py:48 +#: plinth/modules/email_server/forms.py:34 msgid "New alias (without @domain)" msgstr "Nouvel alias (sans le @domaine)" -#: plinth/modules/email_server/forms.py:55 +#: plinth/modules/email_server/forms.py:41 msgid "Contains illegal characters" msgstr "Contient des caractères interdits" -#: plinth/modules/email_server/forms.py:58 +#: plinth/modules/email_server/forms.py:44 msgid "Must start and end with a-z or 0-9" msgstr "Doit commencer par a-z ou 0-9" -#: plinth/modules/email_server/forms.py:61 +#: plinth/modules/email_server/forms.py:47 msgid "Cannot be a number" msgstr "Ne peut être un nombre" -#: plinth/modules/email_server/forms.py:71 +#: plinth/modules/email_server/forms.py:57 msgid "Aliases" msgstr "Liste d’alias" -#: plinth/modules/email_server/forms.py:83 +#: plinth/modules/email_server/forms.py:69 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 msgid "Enabled" msgstr "Activé" -#: plinth/modules/email_server/forms.py:86 +#: plinth/modules/email_server/forms.py:72 #: plinth/modules/firewall/templates/firewall.html:57 #: plinth/modules/letsencrypt/templates/letsencrypt.html:71 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 @@ -2156,7 +2133,7 @@ msgid "Disabled" msgstr "Désactivé" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:52 +#: plinth/modules/roundcube/__init__.py:54 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2175,7 +2152,7 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:20 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Aliases" msgstr "Configurer des alias" @@ -2199,27 +2176,10 @@ msgstr "Créer un nouvel alias de courriel" msgid "Add" msgstr "Ajouter" -#: plinth/modules/email_server/templates/email_server.html:15 +#: plinth/modules/email_server/templates/email_server.html:10 msgid "Manage Spam" msgstr "Configurer le filtrage des pourriels" -#: plinth/modules/email_server/templates/email_server.html:26 -msgid "Service Alert" -msgstr "Alertes sur le service" - -#: plinth/modules/email_server/templates/email_server.html:46 -msgid "Repair" -msgstr "Réparer" - -#: plinth/modules/email_server/views.py:73 -#, python-brace-format -msgid "Internal error in {0}" -msgstr "Erreur interne dans le module {0}" - -#: plinth/modules/email_server/views.py:76 -msgid "Check syslog for more information" -msgstr "Veuillez consulter les journaux système pour plus d’information" - #: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" @@ -3297,10 +3257,14 @@ msgstr "" "serveur STUN/TURN pour Matrix Synapse. Désactivez cette option si vous " "souhaitez utiliser un serveur STUN/TURN différent." -#: plinth/modules/matrixsynapse/manifest.py:12 +#: plinth/modules/matrixsynapse/manifest.py:14 msgid "Element" msgstr "Element" +#: plinth/modules/matrixsynapse/manifest.py:48 +msgid "FluffyChat" +msgstr "" + #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 #: plinth/templates/app.html:46 @@ -3670,56 +3634,6 @@ msgstr "Le répertoire indiqué n’existe pas." msgid "Updated media directory" msgstr "Répertoire multimédia mis à jour" -#: plinth/modules/mldonkey/__init__.py:23 -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 "" -"MLDonkey est une application de partage de fichiers en pair à pair utilisée " -"pour s'échanger de gros fichiers. Elle peut participer à de nombreux réseaux " -"de pair à pair dont eDonkey, Kademlia, Overnet, BitTorrent et DirectConnect." - -#: plinth/modules/mldonkey/__init__.py:26 -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 "" -"Les utilisateurs membres des groupes admin ou ed2k peuvent l’utiliser au " -"travers de l’interface web. Les utilisateurs du groupe admin peuvent " -"également l’utiliser depuis n’importe quel client sur téléphone ou " -"ordinateur, ou depuis une interface telnet. Consultez le manuel." - -#: plinth/modules/mldonkey/__init__.py:31 -#, python-brace-format -msgid "" -"On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." -msgstr "" -"Sur la {box_name}, les fichiers sont téléchargés dans le répertoire /var/lib/" -"mldonkey/." - -#: plinth/modules/mldonkey/__init__.py:53 -msgid "Download files using eDonkey applications" -msgstr "Téléchargement de fichiers avec les applications eDonkey" - -#: plinth/modules/mldonkey/__init__.py:56 -#: plinth/modules/mldonkey/manifest.py:11 -msgid "MLDonkey" -msgstr "MLDonkey" - -#: plinth/modules/mldonkey/__init__.py:58 -msgid "Peer-to-peer File Sharing" -msgstr "Partage de fichiers de pair à pair" - -#: plinth/modules/mldonkey/manifest.py:18 -msgid "KMLDonkey" -msgstr "KMLDonkey" - -#: plinth/modules/mldonkey/manifest.py:30 -msgid "AMLDonkey" -msgstr "AMLDonkey" - #: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " @@ -4714,8 +4628,8 @@ msgstr "" "Si vous n’avez pas le contrôle de votre routeur, choisissez l’option de ne " "pas le configurer. Pour plus d’informations sur les manières de contourner " "cette limitation, choisissez l’option « Je n’ai d’adresse IP publique » dans " -"la sélection du
type de connexion à Internet." +"la sélection du type de connexion à Internet." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" @@ -5354,11 +5268,11 @@ msgstr "" msgid "System Monitoring" msgstr "Surveillance du système" -#: plinth/modules/power/__init__.py:13 +#: plinth/modules/power/__init__.py:14 msgid "Restart or shut down the system." msgstr "Redémarrer ou éteindre le système." -#: plinth/modules/power/__init__.py:30 +#: plinth/modules/power/__init__.py:31 msgid "Power" msgstr "Alimentation" @@ -5618,7 +5532,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Configuration des droits d’accès mise à jour" -#: plinth/modules/roundcube/__init__.py:19 +#: plinth/modules/roundcube/__init__.py:21 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5632,7 +5546,7 @@ msgstr "" "carnet d’adresses, une gestion des dossiers, un outil de recherche dans les " "messages et un correcteur orthographique." -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:26 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5647,7 +5561,7 @@ msgstr "" "(recommandé), remplissez le champ serveur avec une adresse du type " "imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5663,10 +5577,21 @@ msgstr "" "settings/security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "Client de courriel" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -6049,11 +5974,11 @@ msgstr "Erreur lors de la mise en place de l’accès restreint : {exception}" msgid "Updated security configuration" msgstr "Configuration de sécurité mise à jour" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli permet de sauvegarder et de partager vos signets." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6061,14 +5986,20 @@ msgstr "" "Notez que Shaarli ne sait gérer qu’un unique compte utilisateur, que vous " "devrez configurer lors de votre première visite." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Signets" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6317,7 +6248,11 @@ msgid "Software Installation Snapshots" msgstr "Instantanés d’installation de logiciels" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Active ou désactive la prise d’instantanés avant et après l’installation de " "logiciels" @@ -6555,6 +6490,12 @@ msgstr "Authentification unique" msgid "Login" msgstr "S’identifier" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Le mot de passe a été changé." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7423,17 +7364,20 @@ msgstr "" msgid "Authorization Password" msgstr "Mot de passe actuel" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" "Veuillez saisir votre mot de passe actuel pour confirmer ces modifications " "de compte." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Mot de passe incorrect." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7448,21 +7392,21 @@ msgstr "" "peuvent également se connecter au système avec Secure Shell (SSH) et obtenir " "les privilèges d’administrateur (sudo)." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "La création de l’utilisateur LDAP a échoué : {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "L’ajout du nouvel utilisateur au groupe {group} a échoué : {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Clés SSH autorisées" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7473,42 +7417,42 @@ msgstr "" "plusieurs clefs, une sur chaque ligne. Les lignes vides et celles commençant " "par # sont ignorées." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Le changement du nom de l’utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Échec du retrait de l’utilisateur du groupe." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Échec de l’ajout de l’utilisateur au groupe." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "Échec du paramétrage des clefs SSH." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Échec du changement de statut de l’utilisateur." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Le changement du mot de passe de l’utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "L’ajout du nouvel utilisateur au groupe admin a échoué : {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" "La mise en place des restrictions d’accès à la console à échoué : {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Compte utilisateur créé, vous êtes maintenant connecté" @@ -7833,15 +7777,15 @@ msgstr "Serveurs auxquels la %(box_name)s va se connecter :" msgid "Endpoint" msgstr "Serveur distant" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Aucune connexion vers un serveur distant n’est encore configurée." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Ajouter un nouveau serveur" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Ajouter une connexion à un serveur" @@ -8548,6 +8492,79 @@ msgstr "%(percentage)s%% effectué" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "RoundCube availability" +#~ msgstr "Disponibilité de RoundCube" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "" +#~ "Roundcube est configuré pour la gestion de courriels de la FreedomBox" + +#~ msgid "Enter a valid domain" +#~ msgstr "Entrez un nom de domaine valide" + +#~ msgid "Enter a valid destination" +#~ msgstr "Entrez une destination valide" + +#~ msgid "domain" +#~ msgstr "domaine" + +#~ msgid "Service Alert" +#~ msgstr "Alertes sur le service" + +#~ msgid "Repair" +#~ msgstr "Réparer" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Erreur interne dans le module {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "Veuillez consulter les journaux système pour plus d’information" + +#~ 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 "" +#~ "MLDonkey est une application de partage de fichiers en pair à pair " +#~ "utilisée pour s'échanger de gros fichiers. Elle peut participer à de " +#~ "nombreux réseaux de pair à pair dont eDonkey, Kademlia, Overnet, " +#~ "BitTorrent et DirectConnect." + +#~ 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 "" +#~ "Les utilisateurs membres des groupes admin ou ed2k peuvent l’utiliser au " +#~ "travers de l’interface web. Les utilisateurs du groupe admin peuvent " +#~ "également l’utiliser depuis n’importe quel client sur téléphone ou " +#~ "ordinateur, ou depuis une interface telnet. Consultez le manuel." + +#, python-brace-format +#~ msgid "" +#~ "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ " +#~ "directory." +#~ msgstr "" +#~ "Sur la {box_name}, les fichiers sont téléchargés dans le répertoire /var/" +#~ "lib/mldonkey/." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Téléchargement de fichiers avec les applications eDonkey" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Partage de fichiers de pair à pair" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index 655d3d50d..1687f1588 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Galician ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4827,10 +4748,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5157,24 +5089,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5381,7 +5317,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5601,6 +5539,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6340,15 +6282,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6357,62 +6301,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6698,15 +6642,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -7323,6 +7267,11 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Service Discovery" +#~ msgid "Service Alert" +#~ msgstr "Descubrimento de servizo" + #, fuzzy #~| msgid "Manual" #~ msgid "Updates" diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index 081dd0293..3d4317fc7 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Gujarati ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5086,10 +5001,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5418,24 +5344,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5642,7 +5572,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5867,6 +5799,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6626,17 +6562,19 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Show password" msgid "Invalid password." msgstr "પાસવર્ડ બતાવો" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6645,62 +6583,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6990,15 +6928,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -7650,6 +7588,26 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid domain" +#~ msgstr "અમાન્ય સર્વર નામ" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid destination" +#~ msgstr "અમાન્ય સર્વર નામ" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "સેવા પ્રકાર" + +#, fuzzy +#~| msgid "Download files using BitTorrent applications" +#~ msgid "Download files using eDonkey applications" +#~ msgstr "BitTorrent કાર્યક્રમોનો ઉપયોગ કરીને ફાઇલો ડાઉનલોડ કરો" + #, fuzzy #~| msgid "Update URL" #~ msgid "Updates" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index 9429dd14c..1fef45a43 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Hindi /roundcube. " @@ -5531,7 +5434,7 @@ msgstr "" "SSL पर IMAP के लिए (अनुशंसित), imaps://imap.example.com जैसे सर्वर " "फ़ील्ड भरें." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5546,10 +5449,21 @@ msgstr "" "security/lesssecureapps\">https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "ईमेल क्लाइंट" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5924,11 +5838,11 @@ msgstr "त्रुटि सेटिंग एक्सेस प्रति msgid "Updated security configuration" msgstr "सुरक्षा कॉंफ़िगरेशन अपडेट किया गया" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "शारली आप को बुकमार्क्स बचाने और साझा करने के लिए अनुमति देता है." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 #, fuzzy #| msgid "" #| "When enabled, Shaarli will be available from /" @@ -5942,14 +5856,20 @@ msgstr "" "होगा. नोट करिये शारली सिर्फ एकल यूसर अकाउंट का समर्थन करता है जो आपको प्रारंभिक " "यात्रा पर सेटअप करने की जरुरत होगा." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "शारली" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "बुकमार्क्स" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "शारली" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6186,7 +6106,11 @@ msgid "Software Installation Snapshots" msgstr "सॉफ़्टवेयर इंस्टालेशन स्नैपशॉटस" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "सॉफ़्टवेयर इंस्टालेशन से पहले और के बाद स्नैपशॉटस सक्षम या अक्षम करें" #: plinth/modules/snapshot/forms.py:32 @@ -6422,6 +6346,12 @@ msgstr "एकल साइन-ऑन" msgid "Login" msgstr "लॉगिन" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "पासवर्ड सफलतापूर्वक बदल गया." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7295,17 +7225,19 @@ msgstr "" msgid "Authorization Password" msgstr "व्यवस्थापक पासवर्ड" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Show password" msgid "Invalid password." msgstr "शो पासवर्ड" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -7325,23 +7257,23 @@ msgstr "" "

एडमिन ग्रुप के यूसरस सब सर्विसस पर लॉग इन कर सकेगें. SSH के माध्यम से भी " "सिस्टम पर लॉग इन कर सकते है अाैर उनको प्रशासनिक विशेषाधिकार (sudo) है." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, fuzzy, python-brace-format #| msgid "Creating LDAP user failed." msgid "Creating LDAP user failed: {error}" msgstr "एलडीएपी यूसर बनाना विफल रहा." -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, fuzzy, python-brace-format #| msgid "Failed to add new user to {group} group." msgid "Failed to add new user to {group} group: {error}" msgstr "{group} समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7351,45 +7283,45 @@ msgstr "" "बिना सिस्टम में प्रवेश करने की अनुमति देगा. आप एकाधिक कीज़ दर्ज कर सकते हैं, हर लाइन रक " "एक. खाली लाइनस या # से प्रारंभ होने वाले लाइनस अनदेखा कर दिया जाएगा." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "एलडीएपी यूसर का नाम बदलना विफल रहा." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "समूह से यूसर को हटाने में विफल." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "समूह से यूसर को जोड़ने में विफल." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "एसएसएच कीज़ सेट करने में असमर्थ." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "समूह से यूसर को जोड़ने में विफल." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "एलडीएपी यूसर का पासवर्ड बदलना विफल रहा." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, fuzzy, python-brace-format #| msgid "Failed to add new user to admin group." msgid "Failed to add new user to admin group: {error}" msgstr "व्यवस्थापक समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, fuzzy, python-brace-format #| msgid "Failed to restrict console access." msgid "Failed to restrict console access: {error}" msgstr "कंसोल एक्सेस प्रतिबंधित करने में विफल." -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "युसर अकाउंट बनाया, अब आप लॉगड इन हैं" @@ -7700,17 +7632,17 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 #, fuzzy #| msgid "Add new introducer" msgid "Add a new server" msgstr "नया इंट्रोड्यूसर जोड़ें" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" @@ -8415,6 +8347,56 @@ msgstr "%(percentage)s%% पूर्ण" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Available Domains" +#~ msgid "RoundCube availability" +#~ msgstr "उपलब्ध वाले डोमेन्स" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid domain" +#~ msgstr "सर्वर नाम अमान्य है" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid destination" +#~ msgstr "सर्वर नाम अमान्य है" + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "डोमेन" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "सेवा टाइप" + +#, fuzzy +#~| msgid "Download files using BitTorrent applications" +#~ msgid "Download files using eDonkey applications" +#~ msgstr "बिटटोरेंट एप्लिकेशन उपयोग कर फ़ाइल डाउनलोड करें" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "MLDonkey" +#~ msgstr "मंकीसफीर" + +#, fuzzy +#~| msgid "File Sharing" +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "फ़ाइल शेयरइंग" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "KMLDonkey" +#~ msgstr "मंकीसफीर" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "AMLDonkey" +#~ msgstr "मंकीसफीर" + #~ msgid "Mozilla Thunderbird" #~ msgstr "मोज़िला थंडरबर्ड" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 350ee65f8..2c3a19b98 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-29 13:55+0000\n" "Last-Translator: Benedek Nagy \n" "Language-Team: Hungarian imaps://imap.pelda.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5579,10 +5492,21 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "E-mail kliens" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5961,11 +5885,11 @@ msgstr "Hiba a korlátozott hozzáférés beállítása során: {exception}" msgid "Updated security configuration" msgstr "Biztonsági beállítás frissítve" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "A Shaarli lehetővé teszi hogy elmentsd és megoszd a könyvjelzőidet." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5973,14 +5897,20 @@ msgstr "" "Vedd figyelembe, hogy a Shaarli csak egy felhasználói fiókot támogat, melyet " "az első látogatás során be kell állítani." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Könyvjelzők" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6226,7 +6156,11 @@ msgid "Software Installation Snapshots" msgstr "Szoftvertelepítési pillanatképek" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Pillanatképek készítésének engedélyezése vagy letiltása szoftver telepítése " "előtt és után" @@ -6465,6 +6399,12 @@ msgstr "Egyszeri bejelentkezés" msgid "Login" msgstr "Bejelentkezés" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "A jelszó módosítása sikeres." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7161,8 +7101,8 @@ msgid "" "%(box_name)s has been updated to version %(version)s. See the
release announcement." msgstr "" -"A %(box_name)s eszközöd a(z) %(version)s verzióra frissült. Lásd a kiadási közleményt." +"A %(box_name)s eszközöd a(z) %(version)s verzióra frissült. Lásd a kiadási közleményt." #: plinth/modules/upgrades/templates/upgrades-new-release.html:22 #: plinth/templates/notifications.html:44 @@ -7318,15 +7258,18 @@ msgstr "" msgid "Authorization Password" msgstr "Hitelesítési jelszó" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "A fiókmódosítások engedélyezéséhez add meg az aktuális jelszavadat." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Érvénytelen jelszó." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7342,22 +7285,22 @@ msgstr "" "képesek bejelentkezni a rendszerbe, ahol adminisztrátori jogosultságokkal " "rendelkeznek (sudo)." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "LDAP-felhasználó létrehozása sikertelen: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" "Az új felhasználó hozzáadása a(z) {group} csoporthoz nem sikerült: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Engedélyezett SSH-kulcsok" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7367,43 +7310,43 @@ 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "LDAP-felhasználó átnevezése sikertelen." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 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:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "SSH-kulcsok beállítása sikertelen." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Nem sikerült a felhasználói állapot megváltoztatása." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "LDAP-felhasználó jelszavának megváltoztatása sikertelen." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" "Nem sikerült hozzáadni az új felhasználót a rendszergazdai csoporthoz: " "{error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Nem sikerült a konzolos hozzáférés korlátozása: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Felhasználói fiók létrehozva, bejelentkezés sikeres" @@ -7721,15 +7664,15 @@ msgstr "Szerverek, amelyekhez a %(box_name)s csatlakozni fog:" msgid "Endpoint" msgstr "Végpont" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "A távoli szerverekhez még nincsenek konfigurálva kapcsolatok." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Új szerver hozzáadása" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Kapcsolat hozzáadása a szerverhez" @@ -8426,6 +8369,78 @@ msgstr "befejezettségi szint: %(percentage)s%%" msgid "Gujarati" msgstr "Gudzsaráti" +#~ msgid "RoundCube availability" +#~ msgstr "A RoundCube rendelkezésre állása" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "A RoundCube be van állítva a FreedomBox e-mailhez" + +#~ msgid "Enter a valid domain" +#~ msgstr "Adj meg egy érvényes domaint" + +#~ msgid "Enter a valid destination" +#~ msgstr "Adj meg egy érvényes célállományt" + +#~ msgid "domain" +#~ msgstr "domain" + +#~ msgid "Service Alert" +#~ msgstr "Szolgáltatási riasztás" + +#~ msgid "Repair" +#~ msgstr "Javítás" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Belső hiba {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "További információért vizsgáld meg a rendszernaplót" + +#~ 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 "" +#~ "Az MLDonkey egy peer-to-peer fájlmegosztó alkalmazás, amelyet nagyméretű " +#~ "fájlok cseréjére használnak. Több peer-to-peer hálózatban is képes részt " +#~ "venni, beleértve az eDonkey, Kademlia, Overnet, BitTorrent és " +#~ "DirectConnect hálózatokat." + +#~ 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 "" +#~ "Az admin és az ed2k csoporthoz tartozó felhasználók a webes felületen " +#~ "keresztül vezérelhetik. Az admin csoporthoz tartozó felhasználók a " +#~ "különálló mobil vagy asztali frontendek bármelyikén vagy egy telnet-" +#~ "felületen keresztül is vezérelhetik. Lásd a kézikönyvet." + +#, python-brace-format +#~ msgid "" +#~ "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ " +#~ "directory." +#~ msgstr "" +#~ "{box_name} eszközön a letöltött fájlok a /var/lib/mldonkey/ könyvtárban " +#~ "találhatók." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Fájlok letöltése eDonkey alkalmazások használatával" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "P2P-fájlmegosztás" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Thunderbird" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index fa2c5d603..ebe6b4851 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-06-24 00:42+0000\n" "Last-Translator: Reza Almanda \n" "Language-Team: Indonesian ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5228,10 +5141,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "Klien Email" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5566,11 +5490,11 @@ msgstr "" msgid "Updated security configuration" msgstr "Konfigurasi keamanan diperbarui" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli memungkinkan Anda untuk menyimpan dan berbagi bookmark." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5578,14 +5502,20 @@ msgstr "" "Catatan Shaarli hanya mendukung satu akun pengguna, yang perlu Anda siapkan " "pada kunjungan awal." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Bookmark" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5796,7 +5726,11 @@ msgid "Software Installation Snapshots" msgstr "Snapshot Instalasi Perangkat Lunak" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Mengaktifkan atau menonaktifkan snapshot sebelum dan sesudah penginstalan " "perangkat lunak" @@ -6022,6 +5956,10 @@ msgstr "" msgid "Login" msgstr "Masuk" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6778,15 +6716,17 @@ msgstr "" msgid "Authorization Password" msgstr "Akun Administrator" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Kata sandi tidak valid." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6795,64 +6735,64 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Gagal membuat pengguna LDAP. {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Gagal menambahkan pengguna baru ke kelompok {group}: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "Gagal menambahkan pengguna baru ke kelompok admin." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Gagal menambahkan pengguna baru ke kelompok admin. {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -7142,15 +7082,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" @@ -7796,6 +7736,40 @@ msgstr "%(percentage)s %% selesai" msgid "Gujarati" msgstr "Bahasa Gujarat" +#, fuzzy +#~| msgid "unavailable" +#~ msgid "RoundCube availability" +#~ msgstr "tidak tersedia" + +#, fuzzy +#~| msgid "Enter a valid username." +#~ msgid "Enter a valid domain" +#~ msgstr "Masukkan sebuah nama pengguna yang valid." + +#, fuzzy +#~| msgid "Enter a valid username." +#~ msgid "Enter a valid destination" +#~ msgstr "Masukkan sebuah nama pengguna yang valid." + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "Domain" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "Tipe Layanan" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index 22225a74a..b7b59e3f0 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-06 22:41+0000\n" "Last-Translator: Dietmar \n" "Language-Team: Italian ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5362,10 +5283,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5688,24 +5620,30 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5912,7 +5850,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -6131,6 +6071,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6870,15 +6814,17 @@ msgstr "" msgid "Authorization Password" msgstr "Password di autorizzazione" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Password non valida." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6887,62 +6833,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Fallito l'inserimento di un nuovo utente nel gruppo {group}: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Aggiunta del nuovo utente al gruppo admin fallita: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Fallito la limitazione dell'accesso alla console: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -7226,15 +7172,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Aggiungi Connessione a Server" @@ -7858,6 +7804,35 @@ msgstr "%(percentage)s%% completata" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Enter a valid domain" +#~ msgstr "Inserisci un dominio valido" + +#~ msgid "Enter a valid destination" +#~ msgstr "Inserisci una destinazione valida" + +#, fuzzy +#~ msgid "domain" +#~ msgstr "Dominio" + +#~ msgid "Service Alert" +#~ msgstr "Avviso di servizio" + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Scarica file usando applicazioni eDonkey" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#, fuzzy +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Condivisione File" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index dc1991b0c..34ea9c7d8 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-05-20 12:32+0000\n" "Last-Translator: Jacque Fresco \n" "Language-Team: Japanese ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4811,10 +4734,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5137,24 +5071,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5361,7 +5299,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5579,6 +5519,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6312,15 +6256,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6329,62 +6275,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6668,15 +6614,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index ac96c2601..f4f5aa190 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2020-07-16 16:41+0000\n" "Last-Translator: Yogesh \n" "Language-Team: Kannada ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4811,10 +4734,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5139,24 +5073,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5363,7 +5301,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5581,6 +5521,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6314,15 +6258,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6331,62 +6277,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6670,15 +6616,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index 991d620e1..299a330ae 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-02-22 10:50+0000\n" "Last-Translator: Kornelijus Tvarijanavičius \n" "Language-Team: Lithuanian ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4812,10 +4735,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5138,24 +5072,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5362,7 +5300,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5580,6 +5520,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6313,15 +6257,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6330,62 +6276,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6669,15 +6615,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index 2fd7dd00b..830e573e9 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-12-27 05:53+0000\n" "Last-Translator: Petter Reinholdtsen \n" "Language-Team: Norwegian Bokmål imap.example.com. For IMAP over SSL (anbefalt), fyll " "feltet for tjeneren, som imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5611,10 +5517,21 @@ msgstr "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "E-postklient" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5990,11 +5907,11 @@ msgstr "Feil ved oppsetting av begrenset tilgang: {exception}" msgid "Updated security configuration" msgstr "Oppdaterte sikkerhetsoppsett" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli tillater deg å lagre og dele bokmerker." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -6002,14 +5919,20 @@ msgstr "" "Merk at Shaarli kun støtter en enkelt brukerkonto, som du må sette opp ved " "det første besøket." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Bokmerker" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6246,7 +6169,11 @@ msgid "Software Installation Snapshots" msgstr "Øyeblikksbilder av programvareinstallasjoner" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "Skru på eller av øyeblikksbilder før og etter programvareinstallasjon" #: plinth/modules/snapshot/forms.py:32 @@ -6496,6 +6423,12 @@ msgstr "Engangspålogging" msgid "Login" msgstr "Login" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Vellykket passordbytte." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7360,15 +7293,17 @@ msgstr "" msgid "Authorization Password" msgstr "Administratorpassord" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Ugyldig passord." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -7389,21 +7324,21 @@ 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:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Oppretting av LDAP-bruker mislyktes: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Klarte ikke å legge ny bruker til i {group}-gruppen: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Autoriserte SSH-nøkler" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7413,43 +7348,43 @@ 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Klarte ikke å bytte navn på LDAP-bruker." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Klarte ikke å slette bruker fra gruppe." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Klarte ikke legge bruker til gruppe." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "Klarte ikke sette SSH-nøkler." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Klarte ikke legge bruker til gruppe." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Klarte ikke å bytte passord for LDAP-bruker." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Klarte ikke å legge til en ny bruker i admin-gruppen: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Klarte ikke å begrense konsolltilgang: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Brukerkonto er opprettet, du er nå logget inn" @@ -7769,17 +7704,17 @@ msgstr "Tjenere %(box_name)s kobler seg til:" msgid "Endpoint" msgstr "Sluttpunkt" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 #, fuzzy #| msgid "Authentication to remote server failed." msgid "No connections to remote servers are configured yet." msgstr "Identitetsbekreftelse til fjerntjener mislyktes." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Legg til ny tjener" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Legg til tilkobling til tjener" @@ -8468,6 +8403,73 @@ msgstr "%(percentage)s%% fullført" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Available Domains" +#~ msgid "RoundCube availability" +#~ msgstr "Tilgjengelige domener" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid domain" +#~ msgstr "Ugyldig tjenernavn" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid destination" +#~ msgstr "Ugyldig tjenernavn" + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "Domene" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "Type tjeneste" + +#~ 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 "" +#~ "MLDonkey er et maskin-til-maskin -fildelingsprogram brukt til utveksling " +#~ "av store filer. Det kan delta i flere maskin-til-maskin -nettverk, " +#~ "inkludert eDonkey, Kademlia, Overnet, BitTorrent og DirectConnect." + +#~ 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 "" +#~ "Brukere som er medlem i gruppene «admin» og «ed2k» kan kontrollere dem " +#~ "gjennom et vevgrensesnitt. Brukere i admin-gruppen kan også kontrollere " +#~ "den gjennom en av de egne mobil- eller skrivebords-grenseflatene, eller " +#~ "et telnet-grensesnitt. Se manualen." + +#, 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/." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Last ned filer ved bruk av eDonkey-programmer" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Maskin til maskin-fildeling" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index 52837f808..7dc3d27c7 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-19 09:56+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Dutch . Voor IMAP over SSL (aanbevolen): vul het serverveld in, " "bijvoorbeeld imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5573,10 +5486,21 @@ msgstr "" "(https://" "www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "Email Cliënt" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5951,11 +5875,11 @@ msgstr "Fout bij beperkte toegang instellen: {exception}" msgid "Updated security configuration" msgstr "Bijgewerkte Beveiligingsconfiguratie" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Met Shaarli is het mogelijk bookmarks te bewaren en delen." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5963,14 +5887,20 @@ msgstr "" "Houd er rekening mee dat Shaarli maar een gebruiker ondersteunt, die moet " "worden ingesteld bij het eerste gebruik." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Bladwijzers" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6210,7 +6140,11 @@ msgid "Software Installation Snapshots" msgstr "Software-installatie Snapshots" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Snapshots voor en na de installatie van de software in- of uitschakelen" @@ -6447,6 +6381,12 @@ msgstr "Eenmalige aanmelding" msgid "Login" msgstr "Aanmelding" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Wachtwoord succesvol gewijzigd." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7298,15 +7238,18 @@ msgstr "Vereist. 150 tekens of minder. Alleen letters, cijfers en @/./-/_ ." msgid "Authorization Password" msgstr "Authorisatie-wachtwoord" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "Voer je huidige wachtwoord in om accountwijzigingen toe te staan." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Ongeldig wachtwoord." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7321,21 +7264,21 @@ msgstr "" "ook op het systeem inloggen met SSH en kunnen systeemadministratie doen " "(sudo)." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "LDAP gebruiker aanmaken mislukt: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Toevoegen van gebruiker aan groep {group} mislukt: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Geautoriseerde SSH-sleutels" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7346,41 +7289,41 @@ msgstr "" "meerdere sleutels toevoegen, één op elke regel. Lege regels en regels die " "beginnen met # worden genegeerd." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "LDAP gebruiker hernoemen mislukt." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Gebruiker uit groep verwijderen mislukt." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Gebruiker aan groep toevoegen mislukt." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "Kan de SSH-sleutels niet instellen." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Gebruikerstatus aanpassen mislukt." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Wijzigen LDAP gebruikerswachtwoord mislukt." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Toevoegen van gebruiker aan admin groep mislukt: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Consoletoegang beperken is mislukt: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Gebruikersaccount aangemaakt, je bent nu ingelogd" @@ -7701,15 +7644,15 @@ msgstr "Servers waar %(box_name)s verbinding mee zal maken:" msgid "Endpoint" msgstr "Eindpunt" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Er zijn nog geen verbindingen met externe servers ingesteld." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Nieuwe server toevoegen" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Verbinding toevoegen aan server" @@ -8405,6 +8348,78 @@ msgstr "%(percentage)s%% voltooid" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "RoundCube availability" +#~ msgstr "RoundCube-beschikbaarheid" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "RoundCube geconfigureerd voor FreedomBox-e-mail" + +#~ msgid "Enter a valid domain" +#~ msgstr "Voer een geldig domein in" + +#~ msgid "Enter a valid destination" +#~ msgstr "Voer een geldige bestemming in" + +#~ msgid "domain" +#~ msgstr "domein" + +#~ msgid "Service Alert" +#~ msgstr "Servicewaarschuwing" + +#~ msgid "Repair" +#~ msgstr "Herstellen" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Interne fout in {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "Controleer syslog voor meer informatie" + +#~ 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 "" +#~ "MLDonkey is een peer-to-peer-toepassing voor het delen van bestanden die " +#~ "wordt gebruikt om grote bestanden uit te wisselen. Het kan deelnemen aan " +#~ "meerdere peer-to-peer-netwerken, waaronder eDonkey, Kademlia, Overnet, " +#~ "BitTorrent en DirectConnect." + +#~ 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 "" +#~ "Gebruikers die behoren tot de admin en de ed2k groep kunnen deze via de " +#~ "webinterface bedienen. Gebruikers in de admin groep kunnen het ook " +#~ "besturen via een van de afzonderlijke mobiele of desktop front-ends of " +#~ "een telnet interface. Zie handleiding." + +#, python-brace-format +#~ msgid "" +#~ "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ " +#~ "directory." +#~ msgstr "" +#~ "Op {box_name} kunnen de gedownloade bestanden worden gevonden in /var/lib/" +#~ "mldonkey/ map." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Bestanden downloaden met eDonkey toepassingen" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Peer-to-peer bestandsdeling" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index cf878716b..fea24030d 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-03-03 16:50+0000\n" "Last-Translator: Karol Werner \n" "Language-Team: Polish ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5189,12 +5104,23 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 #, fuzzy #| msgid "Dynamic DNS Client" msgid "Email Client" msgstr "Klient Dynamic DNS" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5535,24 +5461,30 @@ msgstr "Błąd ustawienia ograniczonego dostępu: {exception}" msgid "Updated security configuration" msgstr "Zaktualizowano ustawienia bezpieczeństwa" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5763,7 +5695,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -6003,6 +5937,12 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Partition expanded successfully." +msgid "Logged out successfully." +msgstr "Partycja rozszerzona." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6778,17 +6718,19 @@ msgstr "" msgid "Authorization Password" msgstr "Konto Administratora" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Show password" msgid "Invalid password." msgstr "Pokaż hasło" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6797,64 +6739,64 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Tworzenie użytkownika LDAP nie udało się: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Nieudane dodanie użytkownika do {group} grupy:{error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "Nieudane dodawanie użytkownika do grupy admin." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Nieudane dodawanie użytkownika do grupy admin: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Utworzono konto użytkownika, możesz się teraz zalogować" @@ -7151,17 +7093,17 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 #, fuzzy #| msgid "Authentication to remote server failed." msgid "No connections to remote servers are configured yet." msgstr "Nie powiodła się autoryzacja na zdalnym serwerze." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Connection refused" @@ -7869,6 +7811,35 @@ msgstr "" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid domain" +#~ msgstr "Niewłaściwa nazwa użytkownika" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid destination" +#~ msgstr "Niewłaściwa nazwa użytkownika" + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "Domena" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "Typ usługi" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #, fuzzy #~| msgid "Update URL" #~ msgid "Updates" diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index adb00fb4f..ff0d4cf0d 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-05-08 22:33+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5059,10 +4974,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5406,24 +5332,28 @@ msgstr "Erro ao definir o nome do domínio: {exception}" msgid "Updated security configuration" msgstr "Configuração Geral" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5630,7 +5560,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5854,6 +5786,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6620,17 +6556,19 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Upload Password" msgid "Invalid password." msgstr "Palavra-passe de Envio" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6639,62 +6577,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6983,15 +6921,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Connection refused" @@ -7649,6 +7587,26 @@ msgstr "%(percentage)s%% concluída" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Invalid domain name" +#~ msgid "Enter a valid domain" +#~ msgstr "Nome de domínio inválido" + +#, fuzzy +#~| msgid "Invalid domain name" +#~ msgid "Enter a valid destination" +#~ msgstr "Nome de domínio inválido" + +#, fuzzy +#~| msgid "Domain Name" +#~ msgid "domain" +#~ msgstr "Nome de Domínio" + +#, fuzzy +#~| msgid "Service Discovery" +#~ msgid "Service Alert" +#~ msgstr "Descoberta do Serviço" + #, fuzzy #~| msgid "General Configuration" #~ msgid "Updates" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index 1988ba504..cd245db8f 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-29 13:55+0000\n" "Last-Translator: Nikita Epifanov \n" "Language-Team: Russian Matrix Synapse или ejabberd, должны быть настроены с указанными здесь деталями." +"серверы, как Matrix Synapse или ejabberd, должны быть настроены с указанными здесь деталями." #: plinth/modules/coturn/__init__.py:57 msgid "Coturn" @@ -1486,18 +1486,15 @@ msgid "Diagnostics" msgstr "Диагностика" #: plinth/modules/diagnostics/__init__.py:97 -#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "успешно" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "сбой" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "ошибка" @@ -2030,43 +2027,23 @@ msgstr "Сервер электронной почты" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "Работает на Postfix, Dovecot и Rspamd" -#: plinth/modules/email_server/audit/ldap.py:69 +#: plinth/modules/email_server/audit/ldap.py:68 msgid "Postfix-Dovecot SASL integration" msgstr "Интеграция SASL в Postfix-Dovecot" -#: plinth/modules/email_server/audit/ldap.py:70 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix alias maps" msgstr "Карты псевдонимов Postfix" -#: plinth/modules/email_server/audit/rcube.py:31 -msgid "RoundCube availability" -msgstr "Доступность RoundCube" - -#: plinth/modules/email_server/audit/rcube.py:32 -msgid "RoundCube configured for FreedomBox email" -msgstr "RoundCube настроен для электронной почты FreedomBox" - #: plinth/modules/email_server/audit/spam.py:87 msgid "Inbound and outbound mail filters" msgstr "Фильтры входящей и исходящей почты" -#: plinth/modules/email_server/forms.py:17 -msgid "Enter a valid domain" -msgstr "Введите действительный домен" - -#: plinth/modules/email_server/forms.py:20 -msgid "Enter a valid destination" -msgstr "Введите действительное место назначения" - #: plinth/modules/email_server/forms.py:24 -msgid "domain" -msgstr "домен" - -#: plinth/modules/email_server/forms.py:38 msgid "Primary domain" msgstr "Основной домен" -#: plinth/modules/email_server/forms.py:40 +#: plinth/modules/email_server/forms.py:26 msgid "" "Mails are received for all domains configured in the system. Among these, " "select the most important one." @@ -2074,34 +2051,34 @@ msgstr "" "Почта принимается для всех доменов, настроенных в системе. Среди них " "выберите наиболее важный." -#: plinth/modules/email_server/forms.py:48 +#: plinth/modules/email_server/forms.py:34 msgid "New alias (without @domain)" msgstr "Новый псевдоним (без @домена)" -#: plinth/modules/email_server/forms.py:55 +#: plinth/modules/email_server/forms.py:41 msgid "Contains illegal characters" msgstr "Содержит недопустимые символы" -#: plinth/modules/email_server/forms.py:58 +#: plinth/modules/email_server/forms.py:44 msgid "Must start and end with a-z or 0-9" msgstr "Должен начинаться и заканчиваться на a-z или 0-9" -#: plinth/modules/email_server/forms.py:61 +#: plinth/modules/email_server/forms.py:47 msgid "Cannot be a number" msgstr "Не может быть числом" -#: plinth/modules/email_server/forms.py:71 +#: plinth/modules/email_server/forms.py:57 msgid "Aliases" msgstr "Псевдонимы" -#: plinth/modules/email_server/forms.py:83 +#: plinth/modules/email_server/forms.py:69 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 msgid "Enabled" msgstr "Включено" -#: plinth/modules/email_server/forms.py:86 +#: plinth/modules/email_server/forms.py:72 #: plinth/modules/firewall/templates/firewall.html:57 #: plinth/modules/letsencrypt/templates/letsencrypt.html:71 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 @@ -2110,7 +2087,7 @@ msgid "Disabled" msgstr "Выключено" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:52 +#: plinth/modules/roundcube/__init__.py:54 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "Roundcube" @@ -2129,7 +2106,7 @@ msgid "FairEmail" msgstr "FairEmail" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:20 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Aliases" msgstr "Управление псевдонимами" @@ -2153,27 +2130,10 @@ msgstr "Создать новый псевдоним электронной по msgid "Add" msgstr "Добавить" -#: plinth/modules/email_server/templates/email_server.html:15 +#: plinth/modules/email_server/templates/email_server.html:10 msgid "Manage Spam" msgstr "Управление спамом" -#: plinth/modules/email_server/templates/email_server.html:26 -msgid "Service Alert" -msgstr "Сервисное оповещение" - -#: plinth/modules/email_server/templates/email_server.html:46 -msgid "Repair" -msgstr "Исправление" - -#: plinth/modules/email_server/views.py:73 -#, python-brace-format -msgid "Internal error in {0}" -msgstr "Внутренняя ошибка в {0}" - -#: plinth/modules/email_server/views.py:76 -msgid "Check syslog for more information" -msgstr "Проверьте syslog для получения дополнительной информации" - #: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" @@ -3226,10 +3186,14 @@ msgstr "" "качестве сервера STUN/TURN для Matrix Synapse. Отключите это, если вы хотите " "использовать другой сервер STUN/TURN." -#: plinth/modules/matrixsynapse/manifest.py:12 +#: plinth/modules/matrixsynapse/manifest.py:14 msgid "Element" msgstr "Element" +#: plinth/modules/matrixsynapse/manifest.py:48 +msgid "FluffyChat" +msgstr "" + #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 #: plinth/templates/app.html:46 @@ -3595,57 +3559,6 @@ msgstr "Указанный каталог не существует." msgid "Updated media directory" msgstr "Обновленный каталог медиа" -#: plinth/modules/mldonkey/__init__.py:23 -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 "" -"MLDonkey — это файлообменный клиент, предназначенный для обмена большими " -"файлами в децентрализованных сетях. Он может использоваться в различных " -"пиринговый сетях, таких, как eDonkey, Kademlia, Overnet, BitTorrent и " -"DirectConnect." - -#: plinth/modules/mldonkey/__init__.py:26 -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 "" -"Пользователи, входящие в группу админов и группу ed2k, могут контролировать " -"это через веб-интерфейс. Пользователи из группы админов могут контролировать " -"это с помощью любого мобильного или десктопного фронтэнда или через telnet. " -"Смотри руководство." - -#: plinth/modules/mldonkey/__init__.py:31 -#, python-brace-format -msgid "" -"On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." -msgstr "" -"В {box_name}, загруженные Файлы могут быть найдены в /var/lib/mldonkey/ " -"directory." - -#: plinth/modules/mldonkey/__init__.py:53 -msgid "Download files using eDonkey applications" -msgstr "Загрузить файлы, используя приложение eDonkey" - -#: plinth/modules/mldonkey/__init__.py:56 -#: plinth/modules/mldonkey/manifest.py:11 -msgid "MLDonkey" -msgstr "MLDonkey" - -#: plinth/modules/mldonkey/__init__.py:58 -msgid "Peer-to-peer File Sharing" -msgstr "Файлообмен P2P" - -#: plinth/modules/mldonkey/manifest.py:18 -msgid "KMLDonkey" -msgstr "KMLDonkey" - -#: plinth/modules/mldonkey/manifest.py:30 -msgid "AMLDonkey" -msgstr "AMLDonkey" - #: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " @@ -4626,8 +4539,8 @@ msgid "" msgstr "" "Если у вас нет контроля над маршрутизатором, выберите не настраивать его. " "Чтобы увидеть варианты преодоления этого ограничения, выберите опцию 'У меня " -"нет публичного IP-адреса' в Выбор типа интернет-соединения." +"нет публичного IP-адреса' в Выбор типа интернет-соединения." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" @@ -5252,11 +5165,11 @@ msgstr "" msgid "System Monitoring" msgstr "Системный мониторинг" -#: plinth/modules/power/__init__.py:13 +#: plinth/modules/power/__init__.py:14 msgid "Restart or shut down the system." msgstr "Перезагрузка или завершение работы системы." -#: plinth/modules/power/__init__.py:30 +#: plinth/modules/power/__init__.py:31 msgid "Power" msgstr "Pоwer" @@ -5507,7 +5420,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Конфигурация прав доступа обновлена" -#: plinth/modules/roundcube/__init__.py:19 +#: plinth/modules/roundcube/__init__.py:21 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5519,7 +5432,7 @@ msgstr "" "которую вы ожидаете от почтового клиента, включая поддержку MIME, адресную " "книгу, управление папками, поиск сообщений и проверку орфографии." -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:26 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5533,7 +5446,7 @@ msgstr "" "example.com. Для IMAP через SSL (рекомендуется) заполните поле " "сервера, например imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5549,10 +5462,21 @@ msgstr "" "security/lesssecureapps\" >https://www.google.com/settings/security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "Почтовый клиент" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5928,11 +5852,11 @@ msgstr "Ошибка настройки ограничения доступа: { msgid "Updated security configuration" msgstr "Обновлена настройка безопасности" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli позволяет вам сохранять и обмениваться закладками." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5940,14 +5864,20 @@ msgstr "" "Обратите внимание, что Shaarli поддерживает только одну учетную запись " "пользователя, которую вам нужно будет настроить при первом посещении." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shаarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Закладки" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shаarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6185,7 +6115,11 @@ msgid "Software Installation Snapshots" msgstr "Снапшоты при установке ПО" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Включить или отключить снапшоты до и после установки программного обеспечения" @@ -6419,6 +6353,12 @@ msgstr "Единый вход" msgid "Login" msgstr "Логин" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Пароль успешно изменён." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7264,15 +7204,18 @@ msgstr "" msgid "Authorization Password" msgstr "Пароль авторизации" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "Введите свой текущий пароль, чтобы разрешить изменение учетной записи." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Неправильный пароль." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7286,21 +7229,21 @@ msgstr "" "Пользователи в группе администратора имеют доступ ко всем службам. Они также " "могут войти в систему через SSH и иметь административные привилегии (sudo)." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Не удалось создать пользователя LDAP: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Не удалось добавить нового пользователя в группу {group}: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Авторизованные SSH ключи" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7311,42 +7254,42 @@ msgstr "" "на каждой строке. Пустые строки и строки, начинающиеся с # будут " "игнорироваться." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Переименование пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Не удалось удалить пользователя из группы." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Не удалось добавить пользователя в группу." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "Не удалось задать ключи SSH." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Не удалось изменить статус пользователя." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Изменение LDAP пароля пользователя не удалось." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" "Не удалось добавить нового пользователя в группу администраторов: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Не удалось ограничить доступ к консоли: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Учетная запись пользователя создана, теперь вы вошли" @@ -7663,15 +7606,15 @@ msgstr "Серверы, к которым %(box_name)s будет подключ msgid "Endpoint" msgstr "Конечная точка" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Подключения к удаленным серверам пока не настроены." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Добавить новый сервер" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Добавить подключение к серверу" @@ -8369,6 +8312,78 @@ msgstr "%(percentage)s%% завершено" msgid "Gujarati" msgstr "Гуджарати" +#~ msgid "RoundCube availability" +#~ msgstr "Доступность RoundCube" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "RoundCube настроен для электронной почты FreedomBox" + +#~ msgid "Enter a valid domain" +#~ msgstr "Введите действительный домен" + +#~ msgid "Enter a valid destination" +#~ msgstr "Введите действительное место назначения" + +#~ msgid "domain" +#~ msgstr "домен" + +#~ msgid "Service Alert" +#~ msgstr "Сервисное оповещение" + +#~ msgid "Repair" +#~ msgstr "Исправление" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Внутренняя ошибка в {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "Проверьте syslog для получения дополнительной информации" + +#~ 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 "" +#~ "MLDonkey — это файлообменный клиент, предназначенный для обмена большими " +#~ "файлами в децентрализованных сетях. Он может использоваться в различных " +#~ "пиринговый сетях, таких, как eDonkey, Kademlia, Overnet, BitTorrent и " +#~ "DirectConnect." + +#~ 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 "" +#~ "Пользователи, входящие в группу админов и группу ed2k, могут " +#~ "контролировать это через веб-интерфейс. Пользователи из группы админов " +#~ "могут контролировать это с помощью любого мобильного или десктопного " +#~ "фронтэнда или через telnet. Смотри руководство." + +#, python-brace-format +#~ msgid "" +#~ "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ " +#~ "directory." +#~ msgstr "" +#~ "В {box_name}, загруженные Файлы могут быть найдены в /var/lib/mldonkey/ " +#~ "directory." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Загрузить файлы, используя приложение eDonkey" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Файлообмен P2P" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/si/LC_MESSAGES/django.po b/plinth/locale/si/LC_MESSAGES/django.po index ff35b99fc..cbcb7462d 100644 --- a/plinth/locale/si/LC_MESSAGES/django.po +++ b/plinth/locale/si/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-04-27 13:32+0000\n" "Last-Translator: HelaBasa \n" "Language-Team: Sinhala ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4811,10 +4734,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5137,24 +5071,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5361,7 +5299,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5579,6 +5519,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6312,15 +6256,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6329,62 +6275,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6668,15 +6614,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index c8e24673e..a0747528d 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Slovenian ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5027,10 +4944,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5361,24 +5289,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5585,7 +5517,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5807,6 +5741,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6558,17 +6496,19 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid password." msgstr "Neveljavno ime gostitelja" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6577,62 +6517,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6920,15 +6860,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Connection refused" @@ -7573,6 +7513,21 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Invalid hostname" +#~ msgid "Enter a valid domain" +#~ msgstr "Neveljavno ime gostitelja" + +#, fuzzy +#~| msgid "Invalid hostname" +#~ msgid "Enter a valid destination" +#~ msgstr "Neveljavno ime gostitelja" + +#, fuzzy +#~| msgid "Service Discovery" +#~ msgid "Service Alert" +#~ msgstr "Odkrivanje storitev" + #~ msgid "Cancel" #~ msgstr "Prekliči" diff --git a/plinth/locale/sq/LC_MESSAGES/django.po b/plinth/locale/sq/LC_MESSAGES/django.po index f9c5b2ef0..4289a17fa 100644 --- a/plinth/locale/sq/LC_MESSAGES/django.po +++ b/plinth/locale/sq/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-06-07 12:34+0000\n" "Last-Translator: Besnik Bleta \n" "Language-Team: Albanian imaps://imap.shembull.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5604,10 +5507,21 @@ msgstr "" "Google (https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "Klient Email" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5977,11 +5891,11 @@ msgstr "Gabim në ujdisje hyrjeje të kufizuar: {exception}" msgid "Updated security configuration" msgstr "U përditësua formësim sigurie" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli ju lejon të ruani dhe ndani faqerojtës me të tjerët." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5989,14 +5903,20 @@ msgstr "" "Mbani parasysh se Shaarli mbulon vetëm një llogari të vetme përdoruesi, të " "cilën duhet ta ujdisni gjatë vizitës fillestare." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Faqerojtës" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6238,7 +6158,11 @@ msgid "Software Installation Snapshots" msgstr "Fotografime Instalimi Software-i" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Aktivizoni ose çaktivizoni fotografime para dhe pas instalimi software-i" @@ -6475,6 +6399,12 @@ msgstr "Hyrje Njëshe" msgid "Login" msgstr "Hyrje" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Fjalëkalimi u ndryshua me sukses." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7240,15 +7170,17 @@ msgstr "" msgid "Authorization Password" msgstr "Fjalëkalim Autorizimi" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Fjalëkalim i pavlefshëm." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7257,62 +7189,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -7596,15 +7528,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Shtoni një shërbyes të ri" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -8227,6 +8159,75 @@ msgstr "" msgid "Gujarati" msgstr "Gujaratase" +#, fuzzy +#~| msgid "unavailable" +#~ msgid "RoundCube availability" +#~ msgstr "jo i passhëm" + +#, fuzzy +#~| msgid "Enter a valid username." +#~ msgid "Enter a valid domain" +#~ msgstr "Jepni një emër përdoruesi të vlefshëm." + +#, fuzzy +#~| msgid "Enter a valid username." +#~ msgid "Enter a valid destination" +#~ msgstr "Jepni një emër përdoruesi të vlefshëm." + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "Përkatësi" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "Lloj Shërbimi" + +#~ 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 "" +#~ "MLDonkey është një aplikacion dhënieje dhe marrjeje kartelash tek-për-" +#~ "tek, i përdorur për të shkëmbyer kartela të mëdha. Mund të marrë pjesë në " +#~ "rrjete tek-për-tek të shumtë, përshi eDonkey, Kademlia, Overnet, " +#~ "BitTorrent dhe DirectConnect." + +#~ 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 "" +#~ "Përdoruesit që janë pjesë e grupit ed2k mund ta kontrollojnë përmes " +#~ "ndërfaqes web. Përdoruesit në grupin e përgjegjësve mund ta kontrollojnë " +#~ "edhe përmes çfarëdo ndërfaqeje më vete, për celular ose desktop, ose " +#~ "telnet. Shihni doracakun." + +#, python-brace-format +#~ msgid "" +#~ "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ " +#~ "directory." +#~ msgstr "" +#~ "Te {box_name}, kartelat e shkarkuara mund të gjenden te drejtoria /var/" +#~ "lib/mldonkey/." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Shkarkoni kartela duke përdorur aplikacione eDonkey" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Dhënie-marrje Kartelash Tek-për-tek" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po index 42dcdc170..10b5212d9 100644 --- a/plinth/locale/sr/LC_MESSAGES/django.po +++ b/plinth/locale/sr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-01-18 12:32+0000\n" "Last-Translator: ikmaak \n" "Language-Team: Serbian ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4914,10 +4835,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5242,24 +5174,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5466,7 +5402,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5686,6 +5624,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6419,15 +6361,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6436,62 +6380,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6775,15 +6719,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -7400,6 +7344,11 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Service Discovery" +#~ msgid "Service Alert" +#~ msgstr "Otkrivanje Servisa" + #, fuzzy #~| msgid "Delete Archive" #~ msgid "Delete selected" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index fdc2f44ba..055abe1a2 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-24 12:53+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish imaps://imap.exempel." "kom." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5550,10 +5465,21 @@ msgstr "" "security/lesssecureapps\" >https://www.Google.com/settings/Security/" "lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "E-postklient" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5923,11 +5849,11 @@ msgstr "Fel vid inställning av begränsad åtkomst: {exception}" msgid "Updated security configuration" msgstr "Uppdaterad säkerhetskonfiguration" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli kan du spara och dela bokmärken." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5935,14 +5861,20 @@ msgstr "" "Observera att Shaarli endast stöd för ett enskilt användarkonto, som du " "behöver för att ställa den första besök." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Bokmärken" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6180,7 +6112,11 @@ msgid "Software Installation Snapshots" msgstr "Ögonblicksbilder av programvaru installation" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Aktivera eller inaktivera ögonblicksbilder före och efter " "programvaruinstallationen" @@ -6417,6 +6353,12 @@ msgstr "Enkel inloggning på" msgid "Login" msgstr "Logga in" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Lösenordet har ändrats." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7266,15 +7208,18 @@ msgstr "" msgid "Authorization Password" msgstr "Auktoriseringslösenord" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "Ange ditt nuvarande lösenord för att auktorisera kontomodifieringar." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Ogiltigt lösenord." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7288,21 +7233,21 @@ 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:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Det gick inte att skapa LDAP-användare: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Det gick inte att lägga till ny användare i gruppen {group} : {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Auktoriserade SSH-nycklar" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7312,42 +7257,42 @@ 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Det gick inte att byta namn på LDAP-användare." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Det gick inte att ta bort användare från gruppen." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Det gick inte att lägga till användare i gruppen." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "Det går inte att ange SSH-nycklar." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Det gick inte att ändra användarstatus." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Det gick inte att ändra användarlösenordet för LDAP." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" "Det gick inte att lägga till ny användare i administratörsgruppen: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Det gick inte att begränsa konsolåtkomst: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Användarkonto skapat, du är nu inloggad" @@ -7667,15 +7612,15 @@ msgstr "Servrar som %(box_name)s kommer att ansluta till:" msgid "Endpoint" msgstr "Slutpunkt" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Inga anslutningar till fjärrservrar har konfigurerats ännu." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Lägga till en ny server" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Lägga till anslutning till server" @@ -8371,6 +8316,76 @@ msgstr "%(percentage)s %% färdigt" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "RoundCube availability" +#~ msgstr "RoundCube tillgänglighet" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "RoundCube konfigurerad för FreedomBox e-post" + +#~ msgid "Enter a valid domain" +#~ msgstr "Ange ett giltigt domän" + +#~ msgid "Enter a valid destination" +#~ msgstr "Ange ett giltigt destination" + +#~ msgid "domain" +#~ msgstr "domän" + +#~ msgid "Service Alert" +#~ msgstr "Servicevarning" + +#~ msgid "Repair" +#~ msgstr "Reparera" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Internt fel i {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "Kontrollera syslog för mer information" + +#~ 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 "" +#~ "MLDonkey är en peer-to-peer-fildelning program som används för att utbyta " +#~ "stora filer. Det kan delta i flera peer-to-peer-nätverk, inklusive " +#~ "eDonkey, Kademlia, Overnet, BitTorrent och DirectConnect." + +#~ 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 "" +#~ "Användare som tillhör admin och ED2K-gruppen kan styra den via " +#~ "webbgränssnittet. Användare i administratörsgruppen kan också styra den " +#~ "via någon av de separata mobil-eller skrivbords frontend-ändarna eller " +#~ "ett Telnet-gränssnitt. Se manualen." + +#, 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." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Ladda ner filer med eDonkey program" + +#~ msgid "MLDonkey" +#~ msgstr "Mldonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Peer-to-peer fildelning" + +#~ msgid "KMLDonkey" +#~ msgstr "KML Donkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index a36ccc4b2..47c67be46 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -761,7 +761,7 @@ msgstr "" #: plinth/modules/bepasty/forms.py:27 #: plinth/modules/bepasty/templates/bepasty.html:30 -#: plinth/modules/users/forms.py:102 plinth/modules/users/forms.py:228 +#: plinth/modules/users/forms.py:108 plinth/modules/users/forms.py:234 msgid "Permissions" msgstr "" @@ -844,7 +844,7 @@ msgstr "" msgid "Configuration updated." msgstr "" -#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:107 +#: plinth/modules/bepasty/views.py:93 plinth/modules/email_server/views.py:41 #: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 #: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 #: plinth/modules/zoph/views.py:72 @@ -934,10 +934,10 @@ msgstr "" #: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:169 -#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:104 +#: plinth/modules/ejabberd/views.py:85 plinth/modules/email_server/views.py:38 #: plinth/modules/matrixsynapse/views.py:124 plinth/modules/mumble/views.py:28 #: plinth/modules/pagekite/forms.py:78 plinth/modules/quassel/views.py:28 -#: plinth/modules/shadowsocks/views.py:59 +#: plinth/modules/roundcube/views.py:32 plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 plinth/modules/ttrss/views.py:26 #: plinth/modules/wordpress/views.py:37 msgid "Configuration updated" @@ -1341,18 +1341,15 @@ msgid "Diagnostics" msgstr "" #: plinth/modules/diagnostics/__init__.py:97 -#: plinth/modules/email_server/templates/email_server.html:37 msgid "passed" msgstr "" #: plinth/modules/diagnostics/__init__.py:98 -#: plinth/modules/email_server/templates/email_server.html:35 #: plinth/modules/networks/views.py:49 msgid "failed" msgstr "" #: plinth/modules/diagnostics/__init__.py:99 -#: plinth/modules/email_server/templates/email_server.html:33 msgid "error" msgstr "" @@ -1807,76 +1804,56 @@ msgstr "" msgid "Powered by Postfix, Dovecot & Rspamd" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:69 +#: plinth/modules/email_server/audit/ldap.py:68 msgid "Postfix-Dovecot SASL integration" msgstr "" -#: plinth/modules/email_server/audit/ldap.py:70 +#: plinth/modules/email_server/audit/ldap.py:69 msgid "Postfix alias maps" msgstr "" -#: plinth/modules/email_server/audit/rcube.py:31 -msgid "RoundCube availability" -msgstr "" - -#: plinth/modules/email_server/audit/rcube.py:32 -msgid "RoundCube configured for FreedomBox email" -msgstr "" - #: plinth/modules/email_server/audit/spam.py:87 msgid "Inbound and outbound mail filters" msgstr "" -#: plinth/modules/email_server/forms.py:17 -msgid "Enter a valid domain" -msgstr "" - -#: plinth/modules/email_server/forms.py:20 -msgid "Enter a valid destination" -msgstr "" - #: plinth/modules/email_server/forms.py:24 -msgid "domain" -msgstr "" - -#: plinth/modules/email_server/forms.py:38 msgid "Primary domain" msgstr "" -#: plinth/modules/email_server/forms.py:40 +#: plinth/modules/email_server/forms.py:26 msgid "" "Mails are received for all domains configured in the system. Among these, " "select the most important one." msgstr "" -#: plinth/modules/email_server/forms.py:48 +#: plinth/modules/email_server/forms.py:34 msgid "New alias (without @domain)" msgstr "" -#: plinth/modules/email_server/forms.py:55 +#: plinth/modules/email_server/forms.py:41 msgid "Contains illegal characters" msgstr "" -#: plinth/modules/email_server/forms.py:58 +#: plinth/modules/email_server/forms.py:44 msgid "Must start and end with a-z or 0-9" msgstr "" -#: plinth/modules/email_server/forms.py:61 +#: plinth/modules/email_server/forms.py:47 msgid "Cannot be a number" msgstr "" -#: plinth/modules/email_server/forms.py:71 +#: plinth/modules/email_server/forms.py:57 msgid "Aliases" msgstr "" -#: plinth/modules/email_server/forms.py:83 +#: plinth/modules/email_server/forms.py:69 #: plinth/modules/firewall/templates/firewall.html:54 #: plinth/modules/letsencrypt/templates/letsencrypt.html:69 -#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 msgid "Enabled" msgstr "" -#: plinth/modules/email_server/forms.py:86 +#: plinth/modules/email_server/forms.py:72 #: plinth/modules/firewall/templates/firewall.html:57 #: plinth/modules/letsencrypt/templates/letsencrypt.html:71 #: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:29 @@ -1885,7 +1862,7 @@ msgid "Disabled" msgstr "" #: plinth/modules/email_server/manifest.py:8 -#: plinth/modules/roundcube/__init__.py:52 +#: plinth/modules/roundcube/__init__.py:54 #: plinth/modules/roundcube/manifest.py:6 msgid "Roundcube" msgstr "" @@ -1904,7 +1881,7 @@ msgid "FairEmail" msgstr "" #: plinth/modules/email_server/templates/email_alias.html:13 -#: plinth/modules/email_server/templates/email_server.html:20 +#: plinth/modules/email_server/templates/email_server.html:15 msgid "Manage Aliases" msgstr "" @@ -1928,27 +1905,10 @@ msgstr "" msgid "Add" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:15 +#: plinth/modules/email_server/templates/email_server.html:10 msgid "Manage Spam" msgstr "" -#: plinth/modules/email_server/templates/email_server.html:26 -msgid "Service Alert" -msgstr "" - -#: plinth/modules/email_server/templates/email_server.html:46 -msgid "Repair" -msgstr "" - -#: plinth/modules/email_server/views.py:73 -#, python-brace-format -msgid "Internal error in {0}" -msgstr "" - -#: plinth/modules/email_server/views.py:76 -msgid "Check syslog for more information" -msgstr "" - #: plinth/modules/firewall/__init__.py:26 #, python-brace-format msgid "" @@ -2841,10 +2801,14 @@ msgid "" "TURN server." msgstr "" -#: plinth/modules/matrixsynapse/manifest.py:12 +#: plinth/modules/matrixsynapse/manifest.py:14 msgid "Element" msgstr "" +#: plinth/modules/matrixsynapse/manifest.py:48 +msgid "FluffyChat" +msgstr "" + #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 #: plinth/templates/app.html:46 @@ -3143,47 +3107,6 @@ msgstr "" msgid "Updated media directory" msgstr "" -#: plinth/modules/mldonkey/__init__.py:23 -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:26 -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:31 -#, python-brace-format -msgid "" -"On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:53 -msgid "Download files using eDonkey applications" -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:56 -#: plinth/modules/mldonkey/manifest.py:11 -msgid "MLDonkey" -msgstr "" - -#: plinth/modules/mldonkey/__init__.py:58 -msgid "Peer-to-peer File Sharing" -msgstr "" - -#: plinth/modules/mldonkey/manifest.py:18 -msgid "KMLDonkey" -msgstr "" - -#: plinth/modules/mldonkey/manifest.py:30 -msgid "AMLDonkey" -msgstr "" - #: plinth/modules/mumble/__init__.py:26 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " @@ -4580,11 +4503,11 @@ msgstr "" msgid "System Monitoring" msgstr "" -#: plinth/modules/power/__init__.py:13 +#: plinth/modules/power/__init__.py:14 msgid "Restart or shut down the system." msgstr "" -#: plinth/modules/power/__init__.py:30 +#: plinth/modules/power/__init__.py:31 msgid "Power" msgstr "" @@ -4783,7 +4706,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "" -#: plinth/modules/roundcube/__init__.py:19 +#: plinth/modules/roundcube/__init__.py:21 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -4791,7 +4714,7 @@ msgid "" "manipulation, message searching and spell checking." msgstr "" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:26 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -4800,7 +4723,7 @@ msgid "" "code>." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4810,10 +4733,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5136,24 +5070,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5360,7 +5298,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5578,6 +5518,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6311,15 +6255,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6328,62 +6274,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6667,15 +6613,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index 2769ed61a..efc1ccebc 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-05-17 18:31+0000\n" "Last-Translator: chilumula vamshi krishna \n" "Language-Team: Telugu ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5458,10 +5365,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "ఇమెయిల్ క్లయింట్" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5851,27 +5769,33 @@ msgstr "సమయమండలం అమర్పులోపం: {exception}" msgid "Updated security configuration" msgstr "సాధారణ ఆకృతీకరణ" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "రు బుక్మార్క్లు ని సేవ్ మరియు పంచుకొనుటకు షార్లి అనుమతిస్తుంది." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "షార్లి" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 #, fuzzy msgid "Bookmarks" msgstr "" "గుర్తుంచు\n" " (Shaarli)" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "షార్లి" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6110,7 +6034,11 @@ msgid "Software Installation Snapshots" msgstr "సాఫ్ట్వేర్ సంస్థాపన స్నాప్షాట్లు" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "సాఫ్ట్వేర్ ఇన్స్టాలేషన్కు ముందు మరియు తర్వాత స్నాప్షాట్లను అనుమతించండి లేదా అనుమతి నిరాకరించండి" #: plinth/modules/snapshot/forms.py:32 @@ -6356,6 +6284,12 @@ msgstr "సింగిల్ సైన్ ఆన్" msgid "Login" msgstr "ప్రవేశించు" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "పాస్‌వర్డ్ విజయవంతంగా మార్చబడినది." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7200,17 +7134,19 @@ msgstr "" msgid "Authorization Password" msgstr "నిర్వాహకుని రహస్యపదం" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 #, fuzzy #| msgid "Show password" msgid "Invalid password." msgstr "రహస్యపదం కనబర్చు" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7219,68 +7155,68 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, fuzzy, python-brace-format #| msgid "Creating LDAP user failed." msgid "Creating LDAP user failed: {error}" msgstr "ఎల్.డి.ఏ.పి వాడుకరి సృష్టించడంలో విఫలమైంది." -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, fuzzy, python-brace-format #| msgid "Failed to add new user to {group} group." msgid "Failed to add new user to {group} group: {error}" msgstr "వినియోగదారుని {group} సముహానికి జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "అధీకృత SSH కీలు" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పేరుమార్పులో విఫలం." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "సమూహంలోంచి వినియోగదారుని తొలగించడంలో విఫలం." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "SSH కీలను సెట్ చేయడం సాధ్యం కాలేదు." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పాస్‌వర్డ్ మార్పిడి విఫలం." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, fuzzy, python-brace-format #| msgid "Failed to add new user to admin group." msgid "Failed to add new user to admin group: {error}" msgstr "కొత్త వాడుకరి ను అడ్మిన్ సమూహంలో జోడించడం విఫలమైనది." -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, fuzzy, python-brace-format #| msgid "Failed to restrict console access." msgid "Failed to restrict console access: {error}" msgstr "console ప్రవేశమును పరిమితి చెయడంలొ విఫలమైంది." -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "వాడుకరి ఖాతా సృస్టించబడింది, మీరు లాగిన్ చేయబడ్డారు" @@ -7593,17 +7529,17 @@ msgstr "%(box_name)s కి కనెక్ట్ అయ్యే సర్వ msgid "Endpoint" msgstr "ఎండ్ పాయింట్" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "రిమోట్ సర్వర్ లకు కనెక్షన్ లు ఇంకా కాన్ఫిగర్ చేయబడలేదు." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 #, fuzzy #| msgid "Add new introducer" msgid "Add a new server" msgstr "కొత్త పరిచయకర్తని జోడించండి" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" @@ -8294,6 +8230,52 @@ msgstr "%(percentage)s %% పూర్తి" msgid "Gujarati" msgstr "గుజరాతీ" +#, fuzzy +#~| msgid "Available Domains" +#~ msgid "RoundCube availability" +#~ msgstr "అందుబాటులో ఉన్న డొమైన్లు" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid domain" +#~ msgstr "సేవిక పేరు చెలదు" + +#, fuzzy +#~| msgid "Invalid server name" +#~ msgid "Enter a valid destination" +#~ msgstr "సేవిక పేరు చెలదు" + +#, fuzzy +#~| msgid "Domain" +#~ msgid "domain" +#~ msgstr "డొమైన్" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "సేవా రకం" + +#, fuzzy +#~| msgid "Download files using BitTorrent applications" +#~ msgid "Download files using eDonkey applications" +#~ msgstr "బిట్ టోరెంట్ అనువర్తనాలను ఉపయోగించి ఫైళ్లను డౌన్లోడ్ చేయండి" + +#~ msgid "MLDonkey" +#~ msgstr "ఎంఎల్ డాంకీ" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "పీర్-టు-పీర్ ఫైల్ షేరింగ్" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "KMLDonkey" +#~ msgstr "మంకీస్ఫియర్" + +#, fuzzy +#~| msgid "Monkeysphere" +#~ msgid "AMLDonkey" +#~ msgstr "మంకీస్ఫియర్" + #~ msgid "Mozilla Thunderbird" #~ msgstr "మొజిల్లా థండర్ బర్డ్" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index 74743a1ae..a04431e49 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-13 18:58+0000\n" "Last-Translator: Burak Yavuz \n" "Language-Team: Turkish imaps://imap.ornek.com " "gibi doldurun." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5541,10 +5454,21 @@ msgstr "" "gerekeceğini unutmayın (https://myaccount.google.com/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "E-posta İstemcisi" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5918,11 +5842,11 @@ msgstr "Kısıtlı erişim ayarlanırken hata oldu: {exception}" msgid "Updated security configuration" msgstr "Güvenlik yapılandırması güncellendi" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli, yer işaretlerini kaydetmenizi ve paylaşmanızı sağlar." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." @@ -5930,14 +5854,20 @@ msgstr "" "Shaarli'nin sadece ilk ziyaretinizde ayarlamanız gerekecek tek bir kullanıcı " "hesabını desteklediğini unutmayın." -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Yer İşaretleri" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -6179,7 +6109,11 @@ msgid "Software Installation Snapshots" msgstr "Yazılım Kurulum Anlık Görüntüleri" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" "Yazılım kurulumundan önce ve sonra anlık görüntüleri etkinleştirin veya " "etkisizleştirin." @@ -6417,6 +6351,12 @@ msgstr "Tek Oturum Açma" msgid "Login" msgstr "Oturum aç" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Parola başarılı olarak değiştirildi." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -7265,15 +7205,18 @@ msgstr "" msgid "Authorization Password" msgstr "Yetkilendirme Parolası" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "Hesap değişikliklerini yetkilendirmek için şu anki parolanızı girin." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Geçersiz parola." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -7287,21 +7230,21 @@ msgstr "" "kullanıcılar tüm hizmetlere oturum açabilecektir. Ayrıca SSH aracılığıyla " "sisteme oturum açabilir ve yönetici yetkilerine (sudo) sahip olabilirler." -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "LDAP kullanıcısı oluşturma başarısız oldu: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "{group} grubuna yeni kullanıcı ekleme başarısız oldu: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Yetkili SSH Anahtarları" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -7312,41 +7255,41 @@ msgstr "" "tane olmak üzere birden çok anahtar girebilirsiniz. Boş satırlar ve # ile " "başlayan satırlar yoksayılacaktır." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "LDAP kullanıcısının yeniden adlandırılması başarısız oldu." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Kullanıcıyı gruptan kaldırma başarısız oldu." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Kullanıcıyı gruba ekleme başarısız oldu." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "SSH anahtarları ayarlanamıyor." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Kullanıcı durumunu değiştirme başarısız oldu." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 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:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Admin grubuna yeni kullanıcı ekleme başarısız oldu: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Konsol erişimini kısıtlama başarısız oldu: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Kullanıcı hesabı oluşturuldu, şu an oturum açtınız" @@ -7661,15 +7604,15 @@ msgstr "%(box_name)s cihazının bağlanacağı sunucular:" msgid "Endpoint" msgstr "Uç nokta" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Henüz uzak sunuculara yapılandırılan bağlantılar yok." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Yeni bir sunucu ekleyin" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Sunucuya Bağlantı Ekle" @@ -8363,6 +8306,78 @@ msgstr "%%%(percentage)s tamamlandı" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "RoundCube availability" +#~ msgstr "RoundCube kullanılabilirliği" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "RoundCube, FreedomBox e-postası için yapılandırıldı" + +#~ msgid "Enter a valid domain" +#~ msgstr "Geçerli bir etki alanı girin" + +#~ msgid "Enter a valid destination" +#~ msgstr "Geçerli bir hedef girin" + +#~ msgid "domain" +#~ msgstr "etki alanı" + +#~ msgid "Service Alert" +#~ msgstr "Hizmet Uyarısı" + +#~ msgid "Repair" +#~ msgstr "Onar" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "{0} içinde dahili hata" + +#~ msgid "Check syslog for more information" +#~ msgstr "Daha fazla bilgi için syslog'u gözden geçirin" + +#~ 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 "" +#~ "MLDonkey, büyük dosyaları takas etmek için kullanılan kişiden-kişiye bir " +#~ "dosya paylaşım uygulamasıdır. eDonkey, Kademlia, Overnet, BitTorrent ve " +#~ "DirectConnect dahil olmak üzere birden fazla kişiden-kişiye ağlarına " +#~ "katılabilir." + +#~ 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 "" +#~ "Admin ve ed2k grubuna ait kullanıcılar web arayüzü üzerinden " +#~ "denetleyebilirler. Admin grubundaki kullanıcılar, ayrı mobil veya " +#~ "masaüstü ön uçlarından herhangi biri veya bir telnet arayüzü aracılığıyla " +#~ "da denetleyebilir. Kılavuza bakın." + +#, python-brace-format +#~ msgid "" +#~ "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ " +#~ "directory." +#~ msgstr "" +#~ "{box_name} üzerinde, indirilen dosyalar /var/lib/mldonkey/ dizininde " +#~ "bulunabilir." + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "eDonkey uygulamalarını kullanarak dosyaları indir" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Kişiden-kişiye Dosya Paylaşımı" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 8524f1615..e28367c59 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-29 13:55+0000\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian вибору типу зʼєднання з Інтернетом." +"публічної IP-адреси' під час вибору типу зʼєднання з Інтернетом." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" @@ -4888,11 +4811,11 @@ msgstr "" msgid "System Monitoring" msgstr "Моніторинг системи" -#: plinth/modules/power/__init__.py:13 +#: plinth/modules/power/__init__.py:14 msgid "Restart or shut down the system." msgstr "Перезапустити або вимкнути систему." -#: plinth/modules/power/__init__.py:30 +#: plinth/modules/power/__init__.py:31 msgid "Power" msgstr "Живлення" @@ -5114,7 +5037,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "Оновлено налаштування прав доступу" -#: plinth/modules/roundcube/__init__.py:19 +#: plinth/modules/roundcube/__init__.py:21 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5127,7 +5050,7 @@ msgstr "" "MIME, адресної книжки, маніпулювання теками, пошуку повідомлень та перевірки " "правопису." -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:26 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5141,7 +5064,7 @@ msgstr "" "imap.example.com. Для IMAP через SSL (рекомендується), поле " "сервера виглядає як imaps://imap.example.com." -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5156,10 +5079,21 @@ msgstr "" "Google (https://www.google.com/settings/security/lesssecureapps)." -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "Клієнт ел. пошти" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5493,24 +5427,30 @@ msgstr "" msgid "Updated security configuration" msgstr "Оновлено конфіґурацію безпеки" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli дозволяє зберігати і ділитися закладками." -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "Закладки" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5737,7 +5677,11 @@ msgid "Software Installation Snapshots" msgstr "Зрізи встановлення ПЗ" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +#, fuzzy +#| msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "Дозволити або заборонити зрізи перед і після встановлення програм" #: plinth/modules/snapshot/forms.py:32 @@ -5957,6 +5901,12 @@ msgstr "" msgid "Login" msgstr "Вхід" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "Пароль змінено успішно." + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6733,15 +6683,18 @@ msgstr "" msgid "Authorization Password" msgstr "Пароль для авторизації" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, fuzzy, python-brace-format +#| msgid "Enter your current password to authorize account modifications." +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "Уведіть свій поточний пароль для авторизування змін обліківки." -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "Неправильний пароль." -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6750,21 +6703,21 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "Не вдалося створити користувача LDAP: {error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "Не вдалося додати нового користувача до групи {group}: {error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "Ключі SSH для авторизації" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -6774,41 +6727,41 @@ msgstr "" "систему без використання пароля. Ви можете вказати декілька ключів, один на " "кожен рядок. Порожні рядки і рядки, що починаються на # іґноруються." -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "Не вдалося перейменувати користувача LDAP." -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "Не вдалося вилучити користувача з групи." -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "Не вдалося додати користувача до групи." -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "Не можливо задати ключі SSH." -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "Не вдалося змінити стан користувача." -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "Не вдалося змінити пароль користувача LDAP." -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "Не вдалося додати нового користувача до адмінської групи: {error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "Не вдалося обмежити доступ до консолі: {error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "Обліківку користувача створено, Ви ввійшли в систему" @@ -7102,15 +7055,15 @@ msgstr "Сервери, які %(box_name)s приєднає до:" msgid "Endpoint" msgstr "Кінцева точка" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "Ще не сконфіґуровано зʼєднань до віддалених серверів." -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "Додати новий сервер" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Додати зʼєднання зі сервером" @@ -7759,6 +7712,46 @@ msgstr "%(percentage)s%% завершено" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "RoundCube availability" +#~ msgstr "Доступність RoundCube" + +#~ msgid "RoundCube configured for FreedomBox email" +#~ msgstr "RoundCube налаштовано для ел. пошти FreedomBox" + +#~ msgid "Enter a valid domain" +#~ msgstr "Уведіть коректний домен" + +#~ msgid "Enter a valid destination" +#~ msgstr "Уведіть коректне розташування" + +#~ msgid "domain" +#~ msgstr "домен" + +#~ msgid "Service Alert" +#~ msgstr "Сповіщення сервісу" + +#, python-brace-format +#~ msgid "Internal error in {0}" +#~ msgstr "Внутрішня помилка в {0}" + +#~ msgid "Check syslog for more information" +#~ msgstr "Перевірте системний журнал, щоб дізнатися більше" + +#~ msgid "Download files using eDonkey applications" +#~ msgstr "Завантаження файлів через застосунок eDonkey" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "Обмін файлами peer-to-peer" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Mozilla Thunderbird" #~ msgstr "Mozilla Thunderbird" diff --git a/plinth/locale/vi/LC_MESSAGES/django.po b/plinth/locale/vi/LC_MESSAGES/django.po index dd89a0b8f..84af6f994 100644 --- a/plinth/locale/vi/LC_MESSAGES/django.po +++ b/plinth/locale/vi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-07-28 08:34+0000\n" "Last-Translator: bruh \n" "Language-Team: Vietnamese ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5033,10 +4950,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5359,24 +5287,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5583,7 +5515,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5801,6 +5735,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6537,15 +6475,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6554,62 +6494,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6893,15 +6833,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -7518,6 +7458,21 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Invalid domain name" +#~ msgid "Enter a valid domain" +#~ msgstr "Tên miền không hợp lệ" + +#, fuzzy +#~| msgid "TLS domain" +#~ msgid "domain" +#~ msgstr "Miền TLS" + +#, fuzzy +#~| msgid "Service Type" +#~ msgid "Service Alert" +#~ msgstr "Loại dịch vụ" + #~ msgid "" #~ "diaspora* is a decentralized social network where you can store and " #~ "control your own data." diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index 363c7d8e8..22c4f3096 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: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2022-01-13 18:58+0000\n" "Last-Translator: Eric \n" "Language-Team: Chinese (Simplified) Clients to connect to Mumble from your " "desktop and mobile devices are available." msgstr "" -"您可以使用常规端口 64738 连接到您的 Mumble 服务器。您可以从桌面和移动设备连接 Mumble 客户端。" +"您可以使用常规端口 64738 连接到您的 Mumble 服务器。您可以从桌面和移动设备连" +"接 Mumble 客户端。" #: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:9 msgid "Mumble" @@ -4786,11 +4710,11 @@ msgstr "" msgid "System Monitoring" msgstr "系统监控" -#: plinth/modules/power/__init__.py:13 +#: plinth/modules/power/__init__.py:14 msgid "Restart or shut down the system." msgstr "重新启动或关闭系统。" -#: plinth/modules/power/__init__.py:30 +#: plinth/modules/power/__init__.py:31 msgid "Power" msgstr "电源" @@ -5009,7 +4933,7 @@ msgstr "" msgid "Access rights configuration updated" msgstr "访问权配置已更新" -#: plinth/modules/roundcube/__init__.py:19 +#: plinth/modules/roundcube/__init__.py:21 msgid "" "Roundcube webmail is a browser-based multilingual IMAP client with an " "application-like user interface. It provides full functionality you expect " @@ -5020,7 +4944,7 @@ msgstr "" "户界面。它提供您需要的从电子邮件客户端、MIME支持、地址簿、文件夹操作、消息搜" "索到拼写检查的完整功能。" -#: plinth/modules/roundcube/__init__.py:24 +#: plinth/modules/roundcube/__init__.py:26 msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -5032,7 +4956,7 @@ msgstr "" "IMAP 服务器域名,像是 imap.example.com。对于 IMAP over SSL (推" "荐),应该填入类似 imaps://imap.example.com 的地址。" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -5046,10 +4970,21 @@ msgstr "" "href=\"https://www.google.com/settings/security/lesssecureapps\">https://www." "google.com/settings/security/lesssecureapps)中启用“安全性较低的应用”。" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "邮件客户端" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5374,24 +5309,30 @@ msgstr "设置限制访问错误:{exception}" msgid "Updated security configuration" msgstr "安全配置已更新" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli 允许您保存和共享书签。" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "注意,Shaarli 只支持单用户帐户,您需要在初次访问时设置该帐户。" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "Shaarli" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "书签" +#: plinth/modules/shaarli/manifest.py:12 +#, fuzzy +#| msgid "Shaarli" +msgid "Shaarlier" +msgstr "Shaarli" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5600,7 +5541,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5820,6 +5763,12 @@ msgstr "" msgid "Login" msgstr "登录" +#: plinth/modules/sso/views.py:101 +#, fuzzy +#| msgid "Password changed successfully." +msgid "Logged out successfully." +msgstr "已成功更改密码。" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6582,15 +6531,17 @@ msgstr "" msgid "Authorization Password" msgstr "验证密码" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "密码无效。" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6602,21 +6553,21 @@ msgstr "" "单点登录的服务。

管理员(admin)组中的用户将能够登录所有服务。他们还可" "以通过 SSH 登录到系统并具有管理权限(sudo)。" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "创建 LDAP 用户失败:{error}" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "未能将新用户添加到 {group} 组:{error}" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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 " @@ -6625,41 +6576,41 @@ msgstr "" "设置 SSH 公钥将允许此用户安全地登录到系统不使用密码。您可以输入多个密钥,每行" "一个。将忽略空行和以 # 开头的行。" -#: plinth/modules/users/forms.py:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "重命名 LDAP 用户失败。" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "无法从组中删除用户。" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "无法将用户添加到组。" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "不能设置 SSH 密钥。" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "更改用户状态失败。" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "更改 LDAP 用户密码失败。" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "未能将新用户添加到管理员组:{error}" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "限制控制台访问失败:{error}" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "用户帐户已创建,您现在可以登录" @@ -6945,15 +6896,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "尚未配置到远程服务器的连接。" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "添加到服务器的连接" @@ -7584,6 +7535,33 @@ msgstr "已完成 %(percentage)s%%" msgid "Gujarati" msgstr "古吉拉特语" +#~ msgid "RoundCube availability" +#~ msgstr "RoundCube 可用性" + +#~ msgid "Enter a valid domain" +#~ msgstr "输入有效域名" + +#~ msgid "Enter a valid destination" +#~ msgstr "输入有效的目的地" + +#~ msgid "domain" +#~ msgstr "域名" + +#~ msgid "Service Alert" +#~ msgstr "服务警报" + +#~ msgid "MLDonkey" +#~ msgstr "MLDonkey" + +#~ msgid "Peer-to-peer File Sharing" +#~ msgstr "点对点文件共享" + +#~ msgid "KMLDonkey" +#~ msgstr "KMLDonkey" + +#~ msgid "AMLDonkey" +#~ msgstr "AMLDonkey" + #~ msgid "Updates" #~ msgstr "更新" diff --git a/plinth/locale/zh_Hant/LC_MESSAGES/django.po b/plinth/locale/zh_Hant/LC_MESSAGES/django.po index 41564d7c1..2bade7871 100644 --- a/plinth/locale/zh_Hant/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hant/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-11 19:11-0500\n" +"POT-Creation-Date: 2022-01-31 19:23-0500\n" "PO-Revision-Date: 2021-12-23 12:50+0000\n" "Last-Translator: pesder \n" "Language-Team: Chinese (Traditional) ." msgstr "" -#: plinth/modules/roundcube/__init__.py:29 +#: plinth/modules/roundcube/__init__.py:31 msgid "" "For Gmail, username will be your Gmail address, password will be your Google " "account password and server will be imaps://imap.gmail.com. " @@ -4906,10 +4825,21 @@ msgid "" "a>)." msgstr "" -#: plinth/modules/roundcube/__init__.py:53 +#: plinth/modules/roundcube/__init__.py:55 msgid "Email Client" msgstr "" +#: plinth/modules/roundcube/forms.py:16 +msgid "Use only the local mail server" +msgstr "" + +#: plinth/modules/roundcube/forms.py:17 +#, python-brace-format +msgid "" +"When enabled, text box for server input is removed from login page and users " +"can only read and send mails from this {box_name}." +msgstr "" + #: plinth/modules/samba/__init__.py:27 msgid "" "Samba allows to share files and folders between FreedomBox and other " @@ -5232,24 +5162,28 @@ msgstr "" msgid "Updated security configuration" msgstr "" -#: plinth/modules/shaarli/__init__.py:17 +#: plinth/modules/shaarli/__init__.py:18 msgid "Shaarli allows you to save and share bookmarks." msgstr "" -#: plinth/modules/shaarli/__init__.py:18 +#: plinth/modules/shaarli/__init__.py:19 msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -#: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:6 +#: plinth/modules/shaarli/__init__.py:38 plinth/modules/shaarli/manifest.py:25 msgid "Shaarli" msgstr "" -#: plinth/modules/shaarli/__init__.py:38 +#: plinth/modules/shaarli/__init__.py:39 msgid "Bookmarks" msgstr "" +#: plinth/modules/shaarli/manifest.py:12 +msgid "Shaarlier" +msgstr "" + #: plinth/modules/shadowsocks/__init__.py:21 msgid "" "Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect " @@ -5456,7 +5390,9 @@ msgid "Software Installation Snapshots" msgstr "" #: plinth/modules/snapshot/forms.py:27 -msgid "Enable or disable snapshots before and after software installation" +msgid "" +"Enable or disable snapshots before and after each software installation and " +"update." msgstr "" #: plinth/modules/snapshot/forms.py:32 @@ -5674,6 +5610,10 @@ msgstr "" msgid "Login" msgstr "" +#: plinth/modules/sso/views.py:101 +msgid "Logged out successfully." +msgstr "" + #: plinth/modules/storage/__init__.py:26 #, python-brace-format msgid "" @@ -6407,15 +6347,17 @@ msgstr "" msgid "Authorization Password" msgstr "" -#: plinth/modules/users/forms.py:79 -msgid "Enter your current password to authorize account modifications." +#: plinth/modules/users/forms.py:84 +#, python-brace-format +msgid "" +"Enter the password for user \"{user}\" to authorize account modifications." msgstr "" -#: plinth/modules/users/forms.py:87 +#: plinth/modules/users/forms.py:93 msgid "Invalid password." msgstr "" -#: plinth/modules/users/forms.py:104 +#: plinth/modules/users/forms.py:110 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 " @@ -6424,62 +6366,62 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:149 plinth/modules/users/forms.py:393 +#: plinth/modules/users/forms.py:155 plinth/modules/users/forms.py:399 #, python-brace-format msgid "Creating LDAP user failed: {error}" msgstr "" -#: plinth/modules/users/forms.py:162 +#: plinth/modules/users/forms.py:168 #, python-brace-format msgid "Failed to add new user to {group} group: {error}" msgstr "" -#: plinth/modules/users/forms.py:176 +#: plinth/modules/users/forms.py:182 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:178 +#: plinth/modules/users/forms.py:184 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:263 +#: plinth/modules/users/forms.py:269 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:276 +#: plinth/modules/users/forms.py:282 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:288 +#: plinth/modules/users/forms.py:294 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:301 +#: plinth/modules/users/forms.py:307 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:319 +#: plinth/modules/users/forms.py:325 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:364 +#: plinth/modules/users/forms.py:370 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:404 +#: plinth/modules/users/forms.py:410 #, python-brace-format msgid "Failed to add new user to admin group: {error}" msgstr "" -#: plinth/modules/users/forms.py:423 +#: plinth/modules/users/forms.py:429 #, python-brace-format msgid "Failed to restrict console access: {error}" msgstr "" -#: plinth/modules/users/forms.py:436 +#: plinth/modules/users/forms.py:442 msgid "User account created, you are now logged in" msgstr "" @@ -6763,15 +6705,15 @@ msgstr "" msgid "Endpoint" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:99 +#: plinth/modules/wireguard/templates/wireguard.html:100 msgid "No connections to remote servers are configured yet." msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:109 +#: plinth/modules/wireguard/templates/wireguard.html:110 msgid "Add a new server" msgstr "" -#: plinth/modules/wireguard/templates/wireguard.html:113 +#: plinth/modules/wireguard/templates/wireguard.html:114 #: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -7388,6 +7330,16 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Invalid domain name" +#~ msgid "Enter a valid domain" +#~ msgstr "無效的網域名稱" + +#, fuzzy +#~| msgid "Service Discovery" +#~ msgid "Service Alert" +#~ msgstr "發現服務" + #, fuzzy #~| msgid "An error occurred during configuration." #~ msgid "Error updating configuration" From 53876148675f934ca6028600f13aa7515f46156f Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Mon, 31 Jan 2022 20:04:25 -0500 Subject: [PATCH 34/35] doc: Fetch latest manual Signed-off-by: James Valleroy --- doc/manual/en/BeagleBone.raw.wiki | 2 +- doc/manual/en/Calibre.raw.wiki | 2 +- doc/manual/en/Coturn.raw.wiki | 17 ++--- doc/manual/en/Deluge.raw.wiki | 2 +- doc/manual/en/Ikiwiki.raw.wiki | 20 ++---- doc/manual/en/Introduction.raw.wiki | 2 +- doc/manual/en/MLDonkey.raw.wiki | 60 ------------------ doc/manual/en/ReleaseNotes.raw.wiki | 30 ++++++++- doc/manual/en/Sharing.raw.wiki | 2 +- doc/manual/en/bepasty.raw.wiki | 2 +- doc/manual/en/freedombox-manual.raw.wiki | 3 +- doc/manual/en/images/MLDonkey-icon_en_V01.png | Bin 41437 -> 0 bytes doc/manual/en/images/create_wiki_or_blog.png | Bin 0 -> 22660 bytes .../images/create_wiki_or_blog_step_two.png | Bin 0 -> 26757 bytes doc/manual/en/images/ikiwiki_create.png | Bin 19230 -> 0 bytes doc/manual/en/images/ikiwiki_manage.png | Bin 6032 -> 0 bytes doc/manual/en/images/ikiwiki_site_list.png | Bin 0 -> 21943 bytes doc/manual/en/images/matrix_with_coturn.png | Bin 0 -> 53291 bytes doc/manual/en/images/mldonkey.jpg | Bin 83899 -> 0 bytes doc/manual/es/BeagleBone.raw.wiki | 2 +- doc/manual/es/Coturn.raw.wiki | 13 +--- doc/manual/es/Ikiwiki.raw.wiki | 19 ++---- doc/manual/es/MLDonkey.raw.wiki | 57 ----------------- doc/manual/es/Manual.raw.wiki | 3 +- doc/manual/es/ReleaseNotes.raw.wiki | 30 ++++++++- doc/manual/es/Sharing.raw.wiki | 2 +- doc/manual/es/freedombox-manual.raw.wiki | 3 +- doc/manual/es/images/MLDonkey-icon_en_V01.png | Bin 41437 -> 0 bytes doc/manual/es/images/create_wiki_or_blog.png | Bin 0 -> 22660 bytes .../images/create_wiki_or_blog_step_two.png | Bin 0 -> 26757 bytes doc/manual/es/images/ikiwiki_create.png | Bin 19230 -> 0 bytes doc/manual/es/images/ikiwiki_manage.png | Bin 6032 -> 0 bytes doc/manual/es/images/ikiwiki_site_list.png | Bin 0 -> 21943 bytes doc/manual/es/images/matrix_with_coturn.png | Bin 0 -> 53291 bytes doc/manual/es/images/mldonkey.jpg | Bin 83899 -> 0 bytes 35 files changed, 90 insertions(+), 181 deletions(-) delete mode 100644 doc/manual/en/MLDonkey.raw.wiki delete mode 100644 doc/manual/en/images/MLDonkey-icon_en_V01.png create mode 100644 doc/manual/en/images/create_wiki_or_blog.png create mode 100644 doc/manual/en/images/create_wiki_or_blog_step_two.png delete mode 100644 doc/manual/en/images/ikiwiki_create.png delete mode 100644 doc/manual/en/images/ikiwiki_manage.png create mode 100644 doc/manual/en/images/ikiwiki_site_list.png create mode 100644 doc/manual/en/images/matrix_with_coturn.png delete mode 100644 doc/manual/en/images/mldonkey.jpg delete mode 100644 doc/manual/es/MLDonkey.raw.wiki delete mode 100644 doc/manual/es/images/MLDonkey-icon_en_V01.png create mode 100644 doc/manual/es/images/create_wiki_or_blog.png create mode 100644 doc/manual/es/images/create_wiki_or_blog_step_two.png delete mode 100644 doc/manual/es/images/ikiwiki_create.png delete mode 100644 doc/manual/es/images/ikiwiki_manage.png create mode 100644 doc/manual/es/images/ikiwiki_site_list.png create mode 100644 doc/manual/es/images/matrix_with_coturn.png delete mode 100644 doc/manual/es/images/mldonkey.jpg diff --git a/doc/manual/en/BeagleBone.raw.wiki b/doc/manual/en/BeagleBone.raw.wiki index 6484da94d..68948c78c 100644 --- a/doc/manual/en/BeagleBone.raw.wiki +++ b/doc/manual/en/BeagleBone.raw.wiki @@ -10,7 +10,7 @@ !FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. -Note: This image is for !BeagleBone Black (Revision C.1) only. It will not work on the !BeagleBone Green, and also not on the Revisions A&B. If you have such a device and would like to help getting !FreedomBox to run on it, contact us! +Note: This image is for !BeagleBone Black (Revision C.1) only. It will not work on the !BeagleBone Green, and also not on the Revisions A & B. An alternative to downloading these images is to [[InstallingDebianOn/TI/BeagleBone|install Debian]] on the !BeagleBone and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. diff --git a/doc/manual/en/Calibre.raw.wiki b/doc/manual/en/Calibre.raw.wiki index 835510057..567c3b0bf 100644 --- a/doc/manual/en/Calibre.raw.wiki +++ b/doc/manual/en/Calibre.raw.wiki @@ -1,7 +1,7 @@ #language en ##TAG:TRANSLATION-HEADER-START -~- [[de/FreedomBox/Manual/Calibre|Deutsch]] - [[FreedomBox/Manual/Calibre|English]] - [[es/FreedomBox/Manual/Calibre|Español]] - [[DebianWiki/EditorGuide#translation|(+)]]-~ +~- [[de/FreedomBox/Manual/Calibre|Deutsch]] - [[FreedomBox/Manual/Calibre|English]] - [[es/FreedomBox/Manual/Calibre|Español]] - [[hu/FreedomBox/Manual/Calibre|Magyar]] - [[DebianWiki/EditorGuide#translation|(+)]]-~ ##TAG:TRANSLATION-HEADER-END <> diff --git a/doc/manual/en/Coturn.raw.wiki b/doc/manual/en/Coturn.raw.wiki index 44025404b..adf74018f 100644 --- a/doc/manual/en/Coturn.raw.wiki +++ b/doc/manual/en/Coturn.raw.wiki @@ -1,7 +1,7 @@ #language en ##TAG:TRANSLATION-HEADER-START -~- [[de/FreedomBox/Manual/Coturn|Deutsch]] - [[FreedomBox/Manual/Coturn|English]] - [[es/FreedomBox/Manual/Coturn|Español]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ +~- [[de/FreedomBox/Manual/Coturn|Deutsch]] - [[FreedomBox/Manual/Coturn|English]] - [[es/FreedomBox/Manual/Coturn|Español]] - [[hu/FreedomBox/Manual/Coturn|Magyar]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ ##TAG:TRANSLATION-HEADER-END <> @@ -21,7 +21,7 @@ Coturn is configured in !FreedomBox as an advanced app. This means that you need === How it works === -When making an audio/video call, it is best to route the media streams between two peers directly. This will give the best possible latency (better signal quality) and avoid depending on a centralized server (privacy). It scales well because a simple chat server can host thousands of calls without involving the server in any way other than to setup the call. However, this approach does not work most of the time to due to how networks are configured. Most peers on the network do not have a unique IP address allocated to them. They work hidden behind a network device that performs "Network Address Translation" (NAT) for them. This means that the two peers have no way of reaching each other. +When making an audio/video call, it is best to route the media streams between two peers directly. This will give the best possible latency (better signal quality) and avoid depending on a centralized server (privacy). It scales well because a simple chat server can host thousands of calls without involving the server in any way other than to setup the call. However, this approach does not work most of the time due to how networks are configured. Most peers on the network do not have a unique IP address allocated to them. They work hidden behind a network device that performs "Network Address Translation" (NAT) for them. This means that the two peers have no way of reaching each other. To address this problem, a simple technique known as STUN was introduced. With the help of a third party STUN server, the peers can trick the NAT devices, to carry the traffic between the two peers. Unfortunately, this trick only works about 80% of the time. So, if STUN fails, peers have no choice but to route their traffic through an intermediary server called TURN server. All the mechanism of trying out STUN first and then falling back to TURN is described in a protocol known as [[https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment|ICE]]. @@ -31,18 +31,9 @@ In summary, a communication server needs to know the URLs of the STUN/TURN serve === Configuring Matrix Synapse === -Matrix Synapse server in !FreedomBox can be configured to use Coturn TURN/STUN server. In future, when you install Matrix Synapse, !FreedomBox will automatically install Coturn and configure its parameters into Matrix Synapse. To configure Matrix Synapse, edit the file ''/etc/matrix-synapse/homeserver.yaml'' with the following lines: +To configure Matrix Synapse to use Coturn TURN/STUN server, you need to check "Automatically manage audio/video call setup" in Matrix Synapse's configuration section, and then click on "Update seup". -{{{ -turn_uris: [ "stun:myfreedombox.example.org:3478?transport=udp", "stun:myfreedombox.example.org:3478?transport=tcp", "turn:myfreedombox.example.org:3478?transport=udp", "turn:myfreedombox.example.org:3478?transport=tcp" ] -turn_shared_secret: "my-freedombox-provided-secret" -turn_user_lifetime: 86400000 -turn_allow_guests: True -}}} - -The value for the `turn_shared_secret` is provided as `static-auth-secret` in `/etc/coturn/freedombox.conf` file. - -And then restart matrix-synapse server by disabling and re-enabling the matrix-synapse app. +{{attachment:matrix_with_coturn.png|Matrix with Coturn|width=800}} === Port Forwarding === diff --git a/doc/manual/en/Deluge.raw.wiki b/doc/manual/en/Deluge.raw.wiki index 6a01173c2..481ddb4c3 100644 --- a/doc/manual/en/Deluge.raw.wiki +++ b/doc/manual/en/Deluge.raw.wiki @@ -1,7 +1,7 @@ #language en ##TAG:TRANSLATION-HEADER-START -~- [[de/FreedomBox/Manual/Deluge|Deutsch]] - [[FreedomBox/Manual/Deluge|English]] - [[es/FreedomBox/Manual/Deluge|Español]] - [[DebianWiki/EditorGuide#translation|(+)]]-~ +~- [[de/FreedomBox/Manual/Deluge|Deutsch]] - [[FreedomBox/Manual/Deluge|English]] - [[es/FreedomBox/Manual/Deluge|Español]] - [[hu/FreedomBox/Manual/Deluge|Magyar]] - [[DebianWiki/EditorGuide#translation|(+)]]-~ ##TAG:TRANSLATION-HEADER-END <> diff --git a/doc/manual/en/Ikiwiki.raw.wiki b/doc/manual/en/Ikiwiki.raw.wiki index 29614927d..65bf9ba51 100644 --- a/doc/manual/en/Ikiwiki.raw.wiki +++ b/doc/manual/en/Ikiwiki.raw.wiki @@ -1,7 +1,7 @@ #language en ##TAG:TRANSLATION-HEADER-START -~- [[de/FreedomBox/Manual/Ikiwiki|Deutsch]] - [[FreedomBox/Manual/Ikiwiki|English]] - [[es/FreedomBox/Manual/Ikiwiki|Español]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ +~- [[de/FreedomBox/Manual/Ikiwiki|Deutsch]] - [[FreedomBox/Manual/Ikiwiki|English]] - [[es/FreedomBox/Manual/Ikiwiki|Español]] - [[hu/FreedomBox/Manual/Ikiwiki|Magyar]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ ##TAG:TRANSLATION-HEADER-END <> @@ -16,25 +16,19 @@ === What is Ikiwiki? === Ikiwiki converts wiki pages into HTML pages suitable for publishing on a website. It provides particularly blogging, podcasting, calendars and a large selection of plugins. -=== Quick Start === - -After the app installation on your box administration interface: - * Go to "Create" section and create a wiki or a blog - * Go back to "Configure" section and click on /ikiwiki link - * Click on your new wiki or blog name under "Parent directory" - * Enjoy your new publication page. - === Creating a wiki or blog === You can create a wiki or blog to be hosted on your !FreedomBox through the Wiki & Blog (Ikiwiki) page in !FreedomBox. The first time you visit this page, it will ask to install packages required by Ikiwiki. -After the package install has completed, select the Create tab. You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. +After the package install has completed, select the "Create Wiki or Blog" button. +{{attachment:create_wiki_or_blog.png|ikiwiki: Manage|width=800}} -{{attachment:ikiwiki_create.png|ikiwiki: Create|width=800}} +You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. +{{attachment:create_wiki_or_blog_step_two.png|ikiwiki: Manage|width=800}} === Accessing your wiki or blog === -From the Wiki & Blog (Ikiwiki) page, select the Manage tab and you will see a list of your wikis and blogs. Click a name to navigate to that wiki or blog. +Your wikis and blogs are listed in the Ikiwiki app. Clicking on your site's name will bring you to its start page. -{{attachment:ikiwiki_manage.png|ikiwiki: Manage|width=800}} +{{attachment:ikiwiki_site_list.png|ikiwiki: Manage|width=800}} From here, if you click Edit or Preferences, you will be taken to a login page. To log in with the admin account that you created before, select the Other tab, enter the username and password, and click Login. diff --git a/doc/manual/en/Introduction.raw.wiki b/doc/manual/en/Introduction.raw.wiki index b23620135..d8e641179 100644 --- a/doc/manual/en/Introduction.raw.wiki +++ b/doc/manual/en/Introduction.raw.wiki @@ -1,7 +1,7 @@ #language en ##TAG:TRANSLATION-HEADER-START -~-[[de/FreedomBox/Introduction|Deutsch]] - [[FreedomBox/Introduction|English]] - [[es/FreedomBox/Introduction|Español]] - [[fr/FreedomBox/Introduction|Français]] - [[ru/FreedomBox/Introduction|Русский]] - [[tr/FreedomBox/Introduction|Türkçe]] - [[DebianWiki/EditorGuide#translation|(+)]]-~ +~-[[de/FreedomBox/Introduction|Deutsch]] - [[FreedomBox/Introduction|English]] - [[es/FreedomBox/Introduction|Español]] - [[fr/FreedomBox/Introduction|Français]] - [[hu/FreedomBox/Introduction|Magyar]] - [[ru/FreedomBox/Introduction|Русский]] - [[tr/FreedomBox/Introduction|Türkçe]] - [[DebianWiki/EditorGuide#translation|(+)]]-~ ##TAG:TRANSLATION-HEADER-END ## BEGIN_INCLUDE diff --git a/doc/manual/en/MLDonkey.raw.wiki b/doc/manual/en/MLDonkey.raw.wiki deleted file mode 100644 index efc96e823..000000000 --- a/doc/manual/en/MLDonkey.raw.wiki +++ /dev/null @@ -1,60 +0,0 @@ -## page was renamed from FreedomBox/Manual/MLdonkey -#language en - -##TAG:TRANSLATION-HEADER-START -~- [[de/FreedomBox/Manual/MLDonkey|Deutsch]] - [[FreedomBox/Manual/MLDonkey|English]] - [[es/FreedomBox/Manual/MLDonkey|Español]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ -##TAG:TRANSLATION-HEADER-END - -<> - -## BEGIN_INCLUDE - -== MLDonkey (Peer-to-peer File Sharing) == -|| {{attachment:MLDonkey-icon_en_V01.png|MLDonkey icon}} || - -'''Availability:''' MLDonkey is not available in either Bullseye (stable) or Bookworm (testing). - -=== What is MLDonkey? === - -MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs. - -Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, OS X, Microsoft Windows and MorphOS and supports numerous peer-to-peer protocols including ED2K (and Kademlia and Overnet), !BitTorrent, DC++ and more. - -Read more about MLDonkey at [[http://mldonkey.sourceforge.net/Main_Page|the MLDonkey Project Wiki]] - -=== Screenshot === - -{{attachment:mldonkey.jpg|MLDonkey Web Interface|width=800}} - -=== Using MLDonkey Web Interface === - -After installing MLDonkey, its web interface can be accessed from !FreedomBox at {{{https:///mldonkey}}}. Users belonging to the ''ed2k'' and ''admin'' groups can access this web interface. - -=== Using Desktop/Mobile Interface === - -Many [[http://mldonkey.sourceforge.net/Gui|desktop and mobile applications]] can be used to control MLDonkey. MLDonkey server will always be running on !FreedomBox. It will download files (or upload them) and store them on !FreedomBox even when your local machine is not running or connected to MLDonkey on !FreedomBox. Only users of ''admin'' group can access MLDonkey on !FreedomBox using desktop or mobile clients. This is due to restrictions on which group of users have SSH access into !FreedomBox. - - 1. Create an admin user or use an existing admin user. - - 1. On your desktop machine, open a terminal and run the following command. It is recommended that you configure and use SSH keys instead of passwords for the this step. - {{{ -$ ssh -L 4001:localhost:4001 -N exampleuser@example.freedombox.rocks - }}} - 1. Start the GUI application and then connect it to MLDonkey as if MLDonkey is running on the local desktop machine. After you are done, terminate the SSH command by pressing Control-C. - -See MLDonkey documentation for [[http://mldonkey.sourceforge.net/SshTunnel|SSH Tunnel]] for more information. - - -=== External links === - - * Website: http://mldonkey.sourceforge.net/Main_Page - - -## END_INCLUDE - -Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. - -<> - ----- -CategoryFreedomBox diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki index 5e4ad0b42..c333e573b 100644 --- a/doc/manual/en/ReleaseNotes.raw.wiki +++ b/doc/manual/en/ReleaseNotes.raw.wiki @@ -6,10 +6,36 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f ## BEGIN_INCLUDE -= Release Notes = - The following are the release notes for each !FreedomBox version. +== FreedomBox 22.4 (2022-01-31) == + +=== Highlights === + + * coturn: Use wildcard listening address to fix startup issues + * sso, users: Redirect to home page after logout + +=== Other Changes === + + * apache: Don't redirect to HTTPS for .onion domains + * apache: Don't set HSTS for .onion domain + * cockpit: Explicitly redirect to HTTPS as needed for !WebSockets + * doc: Fail when downloading images from Debian wiki fails + * email_server: Drop showing diagnostics/repair and roundcube config + * email_server: Drop some unused code + * locale: Update translations for Bulgarian, Dutch, French, German, Hungarian, Russian, Swedish, Ukrainian + * matrixsynapse: Add !FluffyChat to client list + * mldonkey: Drop app not available in Debian Bullseye and Bookworm + * power: Add a link to power app in the system menu + * roundcube: Add setting for local connection only + * shaarli: Add android app to description + * shaarli: Add backup component + * shaarli: Add functional tests + * snapshots: Clarify that snapshots are take during updates too + * tests: functional: Implement a workaround for issue with screenshots + * users: Clarify help message for authorization password + * wireguard: tests: Add functional tests + == FreedomBox 22.3 (2022-01-17) == === Highlights === diff --git a/doc/manual/en/Sharing.raw.wiki b/doc/manual/en/Sharing.raw.wiki index 3d136556f..d2669907e 100644 --- a/doc/manual/en/Sharing.raw.wiki +++ b/doc/manual/en/Sharing.raw.wiki @@ -38,7 +38,7 @@ The content doesn't need to be provided by an admin either. Any user with write Multiple shares might point to the same content. -If you are user of !FreedomBox and your admin refuses to create shares for you, and you don't need to restrict the access to your content, you still can fall back to the [[FreedomBox/Manual/Apache_userdir|User Websites]] mechanism or the P2P networks ([[FreedomBox/Manual/Deluge|Deluge]] or [[FreedomBox/Manual/Transmission|Transmission]] for Torrent, or [[FreedomBox/Manual/MLDonkey|MLDonkey]]) to publish your files. +If you are user of !FreedomBox and your admin refuses to create shares for you, and you don't need to restrict the access to your content, you still can fall back to the [[FreedomBox/Manual/Apache_userdir|User Websites]] mechanism or the P2P networks ([[FreedomBox/Manual/Deluge|Deluge]] or [[FreedomBox/Manual/Transmission|Transmission]] for Torrent) to publish your files. === Technicalities === Sharing will share the content using the built-in Apache web server. diff --git a/doc/manual/en/bepasty.raw.wiki b/doc/manual/en/bepasty.raw.wiki index bf8ce3638..d55cd6382 100644 --- a/doc/manual/en/bepasty.raw.wiki +++ b/doc/manual/en/bepasty.raw.wiki @@ -1,7 +1,7 @@ #language en ##TAG:TRANSLATION-HEADER-START -~- [[de/FreedomBox/Manual/bepasty|Deutsch]] - [[FreedomBox/Manual/bepasty|English]] - [[es/FreedomBox/Manual/bepasty|Español]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ +~- [[de/FreedomBox/Manual/bepasty|Deutsch]] - [[FreedomBox/Manual/bepasty|English]] - [[es/FreedomBox/Manual/bepasty|Español]] - [[hu/FreedomBox/Manual/bepasty|Magyar]] - [[DebianWiki/EditorGuide#translation|(+)]] -~ ##TAG:TRANSLATION-HEADER-END <> diff --git a/doc/manual/en/freedombox-manual.raw.wiki b/doc/manual/en/freedombox-manual.raw.wiki index 86d2f3512..1ec9d42b2 100644 --- a/doc/manual/en/freedombox-manual.raw.wiki +++ b/doc/manual/en/freedombox-manual.raw.wiki @@ -30,7 +30,6 @@ <> <> <> -<> <> <> <> @@ -97,6 +96,8 @@ <> <> += Release Notes = + <> = Contributing = diff --git a/doc/manual/en/images/MLDonkey-icon_en_V01.png b/doc/manual/en/images/MLDonkey-icon_en_V01.png deleted file mode 100644 index 0d2a7724579db3d6990ad8c968d245775cd9d8bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41437 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 AwEzGB diff --git a/doc/manual/en/images/create_wiki_or_blog.png b/doc/manual/en/images/create_wiki_or_blog.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6c50083822963f78fcacbf2aa5c87c9a9f0e33 GIT binary patch literal 22660 zcmdqJbx_++^fp?f29yShTN|u+@#1X>ZY}NGyZ%-aqfmeP`Z3-ppinC$pc;<~h52&OUpdgnw3&#(z%n{NBBL__8t}m3#Ld-rT!) z|Hab>*iV`tMrmi|Kz_1&MLvWmK_~pXld6tQ178CZ1@7?=sShn-%e`=ghZ~v=UzsRQjSNSmX z=JeseN|9iY-@o!6U+4(Izw+1S%d7kUDic(n#Q&Aw(j>N?{HuI+`9HK1r6Qpf3_YWu z_i*+#0fg!8I=IB{hyn0}mtv|mWqf*Q4kTTRk41(>R#7oghF+yut@ggy<4P@CYiny$ z)4aK(=#myX78nVJF9Zpmw1VgnWyVjA|9l2TOH(fczagDqC3%eXQ>Ki^uHOWj9W&6!;+faS{)4|3#o&o=dg zZVa&%wk2r@vDMQWbXB#P%Zo)#JFFFpC{$Ec^HqwYqM|A*E3GMg=zDs4`1$!&ih23? z)N9K>Pa*(`+7ZgRazS^Ya3ZZ(#?E)3NNhVNvJfM!*v(Glvl4c!fz<;+KrTK$;&2dN z;MTFB5t$S{VQN~M96jM=-6wT_X*F|pu_zY674fl%MqYRqK`2yk)WZK~V%@_~|9?-lQWoWP9KN3CIB9$Hm8t8_`8OC0 z=sk997hPEV7&S?P?u7uXt!Dxx% zD1h{UII{$^D%^|I$Ys73AowkHfZ-LZAAwu?@XS~g7@dwx0%8Owdz1qvX}P9Ongu%c zW9aV+JOA<+m%5Ep5f@e{J|DdP={dNCN43Jo!CJG}Ha+_Q^>an>sxPg?^oFHV&n|KUI#8Aeq84m1j$ zGp^R*7!vjo-kK-jtC2gqg{jgnEjIg2CrUpfKhCjK27w~$kTrJW=`T`e_#N-^Jth4p zIg<-4{AK=Lo;M)pAN$s$!oSy2G;I7`e+<#3x_f8XqvN-t6-5yOG|8`fBY&EmZTPv< z-cWpHHF4!*e;j^fk(odY!lvM$iTqNf;CN`mgX|&KA8IT=VU27)ghH{`7Tyx6=R8tOnvc_@VN-9pGX@dbY$w3x#y5fk7`5vdL$cq^DZerR5H z*iI;A#(D3nW+%(-PpJR1Yz*$}WH#+xSUfyjwWv-lD7S z?{jP{^@zuSZv6?x%|h+cMXX$89{X?h08R!;1w{a;<8=AQXha$Xnk7Q~jNWFlsWJ*Z z$$w54?h81ss#?37#Nq9kklD?|1ROu(4gN96E&o%?X8JMZ^+XN88D$h>aVe+LFU0$A z`icK2Jf}5p>s6*reo6Jp(8*t8!Llm@fS>rL+2g_@0ZnuRJqm{+iuC58Pa#YL<0F&o zbR0jqQCF*#<7Xnnz%}zVl3`0j{R^vczGPxrv`_@ys>>Rkp&YI~(`I9tW-RnMQ?L0Q z6J_;}3(glWFydtRt?ul0Pk4DNNvp}j!>^UamrhiMiA<&jZz0eI7|D~Yzd#@`pifzx zABER^K9s7KKV!X^pkwspk4yUdv+C(dr0L2VI7vphHwWBbI@{M|-pL>-N)e=I-m`xl zTMA`r9mc$S2YljzL@kjFKTf#dwjV+jYRWAn_w#R0IlHwA5NU)UG+zS3tp%xQ%rBR} zVHTL41A!VM&bH$fqvzh4O0hhDyeiz+TG=QlA{quGh0p0U4V2~H-lTCo*iYKmlM>)6 z&VS>7cF`R-&e`c4v8fWoRaHkZ-lnmeHYe1-aCDS{CN+3$M&dAi<*qfr{G&J1117f? z-k(CJIyLqAN9YR&?gcrCK)!_=Y4+7bQUblZ%P-v+I>58NG(Nq_?!m|}Qcr@FZkXN} zkdv~zWZ9-=!dS7!nxKNjXPy`c#=-mgOD1r&N})}B+5(u($*RYXVjJM(Q?xLHu?ObKoyyRR~>8PwGtk zvY~mOPNejEZg{f;YePgFyT6f38ikzT3Ay{XtVOBGLaa^E*(--(Ijp_axIR%{Hyyf2rH_{A*PG9Z zuXb}8UwiST?2*QzsAAcCuDeF%9e&J38vb_fK9r!y%eXLG=PWcJy)kfMMs6yJ7g&lK zjUES^h#pszUx9r;yZ|^kg<2>s(P-z+=Uql%E;<;tXEF@Wq*!DpEW1K7RdvH2xjn8B zbvj-b7nYhPjRWqq$Cyk@&f#nSc0(+=@d#HT%@y@9zY_ugjFA#;eez6zsZptn5R*<6?LbZ9*+Y}Dz>Z@)7B+GAhT&v+n((KspW zq9yD^_>3C%lI$8PM^{oMNApYFx8K{s!CkdKUk;cv&#a@^J9$<-Wbh2?+1tJJg2IJM zG&C$L-$tu8ZU6JoRSB=0rBGgNCEI(;o!Oh9G-u=+05KIq-x@@Dj-0xbK4(4It0#0m zRbVngFbQ=gYQ`CV&{xttzf)D2N>zGj#`zpi*}YhINHXPB(bvJ9w7GtIU6c1?ytJ#i zv_8ZBijFkOAlcLt?Lbw->C=Xc9jr4AKbK(AS4akY0Xat&+;MQ0PF*=f%SDvG${nq6 zv%5Y`raO}k>JJb5p49^YaG6bvTcst6_m0&|nJZOAA_ar#*_qn7Nw3Lbb%pC0%JI7C z3DCG%&Rh)TtN$YLU+yz$nO^+!G&-{sR8uW$0!yoMH1zM9uA1;5S*e{T%*l0oU}G-F zYs1`3-mt%&xs_jZAcp*h_y_M7qr$=>g@IW_p1Kl< zR=$u2t@n#Hp$5?D(2$v_F`n9YQ^sVm4LazZNo`@gt zxIB+m1%p4OWw7z$krV2q@J^{e5>etn>z2sCIoMp+5P6%?-{Q$$O?0AU ziv@!p20FuYRmXKwXEjZVJhw>6JSRw6+AxeQe~1}?z-%)d7dAJW7N(xzc{@o~3A=vW z1~T47PWE^{D#052&Ej9T4s!EpSX)^~luw!M1j%RnFUgf2u?W(Y&H8Spm^YP-5B#w( zGe<>MWbxDayB>awHj7C*qrg#&%(mF=Nz*)dBE`CBO$4y{oZDp3ao8A=8q6G@l{O3j zScP>5L*L-5@;vm)h#O8+d72Z}K%0@2`W|W%aVa_eKL0n^i$ht*>Wl#jD(#=QGv%ILrF^Pk~~3o$YK6w^LUbAXh3% zB~^>hcTDjPL1^8`Uw5!=yK0=Rs;FDUynLwUOiQAAn*Fs_@-e+~`5-Y(R#;Kj#VM$3 z;9*uCOH*otRd3K_sfH-ySrQ2N!)?z73OkEZI??etN=;w`#uj`|hR-#kHbXoo$+?UZ zpLHRbUBV{W8hgoNLjuC`w2z--So?b0rm57K)Cg&b34JSLTb(`}mCch2fwwAW6H+FnOQ&mz#E(95Umuw-@g%{IDtw}ZA*eko5$JeNolyMsThU~$cieB2 zCM6$-H2GNS_|iUr>gtlH=-Lf*AqKKy8`(czalrBK3co|73UaY)jfxdciOjZbK zL91L$C6hx1Bl3ANaohMsltGDi&xx0vH&W@j$Be|@Ulm9*hH#xJ+MVK2xpvaZsWi6C zE9a?Fq|f#2G&~#Qm)b;u`q{Kua?MPDzb<}AkH6Zo4!dkwkE=gFa&A=nSnDcjyAiVN z4;A!#XQuO~W%5~x>c69oOyrE)M2R}Zc!6z;;nk&|l;y1XR2q2EhBVU+N=E8&p!PNE zTll`x`WpKQ z%3p15yO>%$Qzg)+YV-Y_6y6F8ZYpj&g@xMVtuC}44uJKC(MAZW*dA_LOQ{YY*| zsHpPrT6h>h@RUrvKociMluXc>9)5C(ycUOcDd+3KE=8UVvcrmpGKHy|uD|Fg6sUB( z3uf)HFlT)g84_!6v`6~fjnyeHS4PG+h1J!Ao4JKdO6}OHns}9){?5skE_sf9i01}q zN`-O&#sN!HeWz!%1jM$L7y+@ziq2m{+B+x5R`>OSLb|1DNZVRh>0MpkO${mG%dvr9 z<|q(EZ?NqTQT-@a6U5b7p&Iye0&=Lgc53-a20`PCqhmMwt+jh^% z4n@v-_~nx0|MPt*7=v&~a)@nu^Tz$%;z9FDtMGEU4#Ie7I*6x7(;T6t+g8rg) z^7+F|m-DV-&qCTw#e>fiOdBJ>t zL7=Xuk`Efo20ylhhlM3?^acMpZ>+t{T^YaCtY}g5+zw1GZ1Z&Fe9JA4A_8#YF4P>U z>2({KO%#2hlZw39BNX>7u(%>;cWN$};*f-}n4Oi&Xmc}FmF7c98PqA#P7ieo0rDLn zPy$gV*-zxLn{Mf{e4ML(E{&aCtE8IRts$fK*a78s`CKDgU-S%hRyTR-nU%ii<>^o` zTwORR9NvoNbuku}&%Lm~9R~wfRpRYsY(s^)lsRRe|CrxkZidRtojPiv%N=zco7ChN zO04#W6;8jEkD@>zg}@{<6H5+M{$l5he~l8CR{uwv?&`H<*MJYS`;1n{+eqAg(XNj& zAS*^wKW64hAV=btHNy_70s7c}8F*fEv!t7yD0u6{CGJl-Q~^fHPBA^qe|nrwmS{G> z^m5WhZ(23!IKF=cOU1R5O7cI*SVNKgVfcx|xQ zGAT@RGp{GeK-gpZi^jggomK+Il%prF^XR^G&t4WfVzbDBLQ}QtVqY6sYI}C#VNU_d zzk5#vi2d6&@y-9$)w}K87mV7rXRNGCGFLJnF<>M%rX`D_fk~&i; zvicPq#~blRmZn?tps<@q9q+KB%;2Uc(3rP$^4;G^`N22YGYg<*l~6i}{sR0QGqZ!C zD0L7jDzzFFzigT2AqgrMv3cKI+YA*rXB68$9C$;?yO_37Z{CFgYk9bnHoL9uj}tO5 zafoYe9EjCyb(^hbUE(PIoKD}`{yi8!B&T=|Bdyy2n@LqL|AGCG@fuY!q{%vE!8F7U z9Q((KE@aqCnv&AU96JRNNcHVA)|81}3j@q7LM2-=ocI`{nL@%Y7UD?_V@t=6b#%U$ zMN%ezPr9^d(@lt{zIDAZxSTlCfZ9lhGD0U#T#As|6hK%NZ3KdY~>zOPk9#2CFH4c2epnDiM>{@Mms#Ax!Ycw!9 zyO7i*dL_a&=iW+MmbFx+V?{b9zpP?!m+lb}My64e@1QZz?LByWcL5;7o60i03L<%sW{aq7x?GK#he{5ZrDwr{w#i?OSDR_vf7c!mCrQSaIiqIDC80 zpX&HH_Ze;~*@bwl7U@J~;R;yU>r`L2-&k#%e%%<$!K|(zNFWb$k)m$fGaK^!3Zhqx zr3r-x+z&FX(JfCnGnZBtQN7|gc1R;u&1cCpYu-u}>s0*6QY(vm5vvB}`Q|!_F_e1q zS_@=|?V_rWCyus)rbvhw8%#cL@W-^J>)u(W94gaz zyB`Ey-d*|L>F`yiI$d^96)lwOE2)ATNQFaA4bQbY($L!e&QkHp&M$5rlA_lx>2022 zLA-Yf(#XWj9HzeE<@Jo=_Pa>YO7EDjIFEOU{H(eg(f7x2@W($|TMbYaogJ{ldy$|O zTj1Uy@uTfkL&1M6^Zy!itjX{R_BpSk&kWRJ{m>`dQ;CD<$5F;7EW4T0W$fha%nhe& zx~ccfQdUwTiRdoD4;G7{{<5OuL!k~l6)3a8J}3gGJAVj(pNKFe^Of0T&tXUVnJ?u( z{<2ZepnGl8A_@s^)Z>ViQBYJ=pMS1?OZ_Fa_JX$rv;`TTR+N@jO^xsCJ5ifo#_jAo zNf1mG5=wKqYAUY7I$1S*DJd!A%8Tv@Qf6jmEIk~XmzUS#iTcDwLP<_uTt{4TC7i>J zWjo)gueZPbf2ri3*D%{pu~MB)B-oy`)3=KL>x`kexR@{;#FALT-`@M0BtlV9ku^TC z^fYyGIbEribx`9=Cw?bwMR z2e4nh50jhDl+cf_VPrmIv9ZJGj2)qdx=e4nKutT2oX8o$Usk^JSJW1I3e1I? z>lNAd(Zg;#jW0xjE8%YsFIQ+`_G4Xz(^Lp8Go!+vW_Hw>J2L_lUU?by{k???I%xe} zb9?GuyB8c5+a+RR8-Hb-vjw#aDB-F#?oWYf+BOq2Df&9ub@x|0ur#_%62e{jTlQ*#ibiw` z-8nL6u1h(1qQwW)_i?a;Is!by2HnqmHWw93D_jl6hQEEWQ|ai2Xw|ZQGSG0p&H25# zWTzkGaWEjbooVy2>V-jCiD;M%YU?Kdh6n9qzue6lw{%;QSQXXSkUkAz4kyc&-__V; z13bfv!XuNTGuEOb>QpgMxvw!jBNLIWkVQsqLbreJ9|%ux&*@!&J)R<7$3(;+s zQjZ5hxx#l$P;ydVzl^JVYXH#~ZH)ID$bkB%@9vc4nBQv#=`~Q5(g!4JmNv1Ws_r3d z^3^Vmw(Bdz2iL-b>g;^VaKE$U?vA+h$C;fl*41-hK9sRNIN7AzWHaC|g_Hu$)bCRl zel%(0HV?m8=p~?Af?58%Vf^J>@^y>pW9P@UmQ!u9lY<_&#D|3jgFCh{)%u^}qQeeKo%E3kfATuG$aXTDuSRi9U_ z`Q?}4Ma5mtLZ?Xc+m(2sR1SlZIVBLtM`L26Q(DQOiTqXKPd0VS^jTi(+1t=Bx4LSa zcS+>EQuP^r>dSX0qrMV@CO!h3vpzfara8PZHIddr{JXrCgCiX7UWXZ(NlcG3#T+Nj z`&*eR!>t4#I7NBUWM0LPjn-xb?8Ls}jB04Gn68ZQ=*)t}ZdQ7k^K%T%dtmD9jFhFu z^O9=&<{4DzaUe^W^TvUCT3CYVTV6by2^X7j-}ax-MK-zlmkdw$=4(nCxsLNy$icT# zH(J7_s{=rSMpsl~+#`*BAzu5})~Yr(YHIe&jjXc1*J;Ft&3hkU!l@#$?ft#I*>6u+ zbEo|0U93_*t&8pMWE~#c`1Kcr2?~18Kno53y6Q98&I(opaC}+HC%0cyvfwJXt=Bgg zS+&~$KmcGrcywT!M`unvx9t4PSY4$@Z(CrSomsy69{zwzaqBNU?Wyd;GqQ1qdV`d; zMCum*jkH!x+HQIaR=(3gTZ+1Ebmz?70ZG0OalA_6d_^--N z5%uO<%Kp4Z&y>5K?oLz}PoNS-xV9h$-)t*vD>>eqyQ zLcMH2@mNBdEBRhSqCsK0g?ns9Lth&vme}(LS0T4o4yCZJyiCtDh? z%VDl-v;|o}K~}}*q#KcCJ=1T8*|`!L<>_-(GrGxATVp-*&d32xImsEcZg}9ePRl+A z0lM{6PWF3RxiJ6BXQ}S{W$w1oNjO&q@_XaGH+DO4?=27EC^|x|iyHT{1H%&dL~pac+r2UL6hTLI=mEkvw>o_AWZB^bGvAh4u4pq(q}TvP9=OT)8HT^!=&(N`p!PAeyv1+b({ORJhK9{t$%<=oeU*xjh6 zO$X3Y63B>R7D&QNZ4hRQrwajCT3W3a^aSbok~{AowI#tEba_S&0>z$UfA(iHwG^H^ zWwKih6KU@q9v}1etI6pxHI~m8uMm^-fi9jJdwfO;Jc}Mme~4m_FQY5t-5<*&G}Te} zurJ)e!HC_qP=5H9nsh`$+2!u(Cy@H+rWW_sO*4Y4IE5 zhQZ%aFgpToU8hX2)l!l8FvtvdP~-}(RgbxtWNouJXCs^H()!Q{e{p+;B(@qoX3088 z;XnLTrl(eVve)T%PP5eFb#3rrx!6o%XSW&@Sv0JY=vjcj|VrrybF#cz4m#q9fgjUv8|bNnvpBWsmBMkoeH7W-2Is zfZ4oz6bSUG@P(bt(=d3eKS~bOyj zU@vK7F}=T4P|RT%wWZfn)Q4qYAJ9Aw4u16H^5DY8bl!`xr?xz5;MTRR*Wm3hJOr=r zHdprkPG)8lISU04CyKuh}Q>N2~z$D3sXkx@}Bl~ z#_)J5vO+5T_uqT$ON}g+Ccmi27#%W*>5CE*aQHho4vlyreKCQHYhmyAnxS&H2wnL7 zyZzGHx&KQ~D-0Y90y%K1s}&K6AhpXH`xF?KY=AjIiW;T1WVs+1q$`4h7yMs2!w*N| z`t&o|Bg<@3HFpUA9YEBqd?vG>8ZLEr_YBY4CHd39Pg>YqC6&FsdxexllY;*K@ECli zGq=>y*VAT{JQ;K1nT1q&ff*U;86Lg6zJ(?RXC^psa6&FmdUh)r3|L}jW(u=fbE70e zFV8oEiSnhT`Kl^iYKoC4beyj2kJVe3?{_=KHb~305x=GRJD;<)K$wD|&wJihOM4Nx zOEGDor_lV2pdjYR1DGtX2xz%r)fJZ3g)|CON4RZ(yCcdCg#~Bd*WB&98;o|f{3NEP z&a~a5bl0ZH&@SVFpZrL^hIzQu6;J!zq)vQ4=TIGeuj2++75DUN!x(3Br+EnAu(_wL5ggb`()Z3nwo{O-|b56`-Y zE9zEP#`v+%y5omZDGmES=`M|5(`lNhbg`fDSCyHX*E|v7Y<|Dky);^obzVk^Q#vRc zjpy!ERcSNg;NgQ}*OpCO!j&A@HbwGWeg%b3sxVSrXNOluWyY@&NXPxC`(!`z{fxtH zk7}2n();b^z8?~trP(6J*BDiviA8jpA)7&rHNUSJr905%9?hSRajH6};Kp3!zDlf* z71x?r!rE}uXd?VHCtUFU$y_6LWHsni@SS2`d3XL|+VteozmZMTBfiHxN%p!4eXPWP z7Ig(%)W78BfZJ+M5BIHHKa?~~%81~hm=m6Rf2wuY@P`i@(|v=hG$K_naNdkir9FGb zwk0TpUQr!p!NhVzw&H{IhfHvlQZCo)@8laou{=V0w8 z6HejxL|F%Vs@Pu@)e?OV+&iaE_F>{#)J*O0o}dA<_7_bz#5#=G`Z8x&|Kj zLK#Tdf{ycH{t0nm#PycD8gfydjTbfZ5mL8)2YiKA)Bcll0JNK$aM7|$RkdIiHUWs` z{eXUn++i>+QeV0Vx&Hp2+x{1xWpNfYqSDG%4jRWc17y7E@3Q0H$m{iYKO{Y- z_36o{XY2zTmkJ7&oK88pVnbAe*rSrIs&7DHc`4B8$L4>hDzPW(f~Q0#Bi5^y9-<-e zmS!vTS0m)e! zXCFS{fXqn>@BqoNSq3j@aY&NP*K~}QH?CRG z;h*LlO$`g<-4UDwyo8+WS=Cq@#j)te@DHKMfE@ctn9dt6qxEbgXE&?t*U4iuvkZT;HGlC|(mVI}Mldaj_Cnj!as~3l=)NZBo*{p3VXo4SDguAp3*Ue;MSB=2PvgbS}R-t=XD|~~)n=iBFjLN-~FNZb$z9mwwm;t0o(-R;nk54HX=*s3DbPhf256kfa z-ir4)`Q#t;VDF&(KC7{?_RoPn8QpoG1Q*LLPqbS2+DVc7Uc{LBp@OqDQfcZe4hn?1 z38!|J23p?*BD=fk9YH>4`Q%Z1nL9;yPF7r;AC$T*-H&$n~&dE&n)$-d}v|Yx*>ih-Nl4xB4I&>kD@I1wfh64wO@5mO1tl$ z-Wqz0^>yt|vq!YmmFTHWIa2afS10~l$%}b0c(*iPdeXi?Uu{pC(Qt|E?}tKHSA0=4W-4m@H2a2X#iQ4c-x8AkK@@AD2#B*E@N%}_fE*CPWTOjo)bkyj2Uu1b^hJqVi7^R?oxljQ#B`f*-L15l^3bo$hs)K9bcjPg1BT zd&jH!972RS+A)L8pLhPDGwfl?FEHC&XMUe}PBMdUASPfu<6uE!Pdk2-CJ>}4=?c}!ewmHY<3NIe8hTK5;le5!?SZf|RxVdDldZ)$_1!A}XzpP+r?dH5 z6Tz{KcS-%hmQK!`Y_3sr9mx~-?v0q0lkzD$*fn<+8TOhUqOB?q&wBGVcs&*BMRQ*;vKU@miKQ+4aw}X!#Zg-E$E)pjd1yD8~+sHGUzmCB{tc%nB`sESa zzkPEAUna|B6j!j;Trtsi0V+f9e7CcOQH>&8pL|^?)0?8G@X@>s9c>>`#E@Ff81C(* zGsy`4j0hRkW4ux`wd%SklgyCELRCnCTi}o3l1-vX>udePTmg+BOKoyfG5?pZiMG_M zoe!s)=6`jF>O~+v{K|(yJAOuvT5)f|5$Si$)SYDB_4Z{>Ye@>^8%SDF?%kXGX*oiz zI(tLz6Cx|#on@0c4}{I^Ev{x<8+Rkk&rYJ;*`jif;Pm?UQ5v`vwpJMD&Y98D2Z)Q| zTc_6jvu7NMGJ7DgpOLDd*KymazY!`c!(m{&*b^)O$ZRqaZflWfv;sdwuI+XX~ow{x0`$#$>LChDa57V9?~aeWPuNL2fe} z_4?6L6uxh9bKJ;!gY_Nv)HR9$xjz6}=jn3}m~Ygvv7~S!uJ1ax1*he2gWl$zDeeg$ znzL+A?+SVS`FSA5K_YZ{$#wYWVgSQ(da_-==_~H8oS1Pg68&H;EV!PS8bi6q)JDe=z#7ZV?-NJhuvF1^W&cCt z@wOethB?{rpS!4AYu1$J)f2u-p%yvPA#p{Gp?5rZ-W!9^y7elJm(_%iLZW)hGtP4k zYy4L~O(_^`xo*YOZA48Ke;?&`u@@L=Tx@?P{=^Q#ZJ+4xJk~90VIoXWuHN!3UH z8EIc@-Nd$m(w3Fg7HNeu#1M2?SeRjN-5$jLj!a~bLd^C5%m;DoZ$y|5m(FyOKHq4I z{DBN3i=vn!!9heVEc4NsXM}mAdHNvUhCZj=)%aj)dpOyML-?OEZ6UM4RMBab_W`Yi-jc{+oGEsZ@<*T_KV6U} znC_3VVpCOaHq!S2P)}Dcc%~=Avyw|!>l>v_rZL-v3PryAsH%3l=7%cpfdMWyhsKGt zhXH)M@BF);lG>?sQ9-y)K2L-uY~n`hhbrwDNPOs$ja!ON&fB>?`{PYGBRr2wzPh3O zy;H8Su_01*pEgXs#bdWIF6l)+1M2`o;?a<^Am+RNwAI(leSLbv-SaetYfQ>wOS>-kEk?<1+a*EItEa z`0jx@fTPc0oxK6CB(&Mtv`aL5(0lZ z^ZU&9xpdi=<~C|v&WDbIg4|gNP^AhzACcwR^wT}PRE4Bu%`0m5{=Gq}$;aTa^jBG7 z<@V~WdmH~n?GmZQB_-H(J?FUZw>7DL+b=66>1t=ojsyB}Bu@$<&9@K}?)R8o4qy$u zQ#Um!x3%LXU(NG?FM3|%X$I3cw)|nOM{P4Z zi&C!jFJC5mnRTQ{BC|GQZi{7nosAZY#NuO^tio7C_S6z7X-OQB2d#g^Jsb>Rj-KN; z*^AeA?tCwLib~WM&9C9+!-N{31J67MU>fyL8?hpS}^#szl0I0uKWCPcd5LYvpcIVrFULd?W$ipXc_5eFg)CCI-k zr?Px(pbxFLw6$w56eDOme{C>ta`C4x8&=+O`6izUn+ieZabq+RJ)fS{bt~G2G=UdH zn^OovX%WrmYy(XLgMx~6w@&X1JUzaYD+LNu6NppvZErn0u5uxk%VJs;lvLVDCoOg` z5NUB=IitN6@Jsi1)*lD2&qXz=GCDj@5P2`+zqfMPjrajbYdWJ|EMBnG%4lzkikS?t z7?lIo>6CKwh{q=Bdeg?|hQ?txncA2b2{Vh&k9*o}Hh+-A+YCLKRt6n-^mgoNzCb6m zPXzm{p5x2miVAsbRpK=Dn1|$KB;?glF~GN`cI&_T!Bym@aa)lFo`#V#7CkwDl{Nlg zGm#m-@)HC0%77%jw5;4$DSWieW;Hi4*_2r&Z3TM$L8>kxnJU=4bWr5qKQ8N4`6d)< zjz}Jph0SSd|6>zBaTJN+gv<<2A4WYh=&;RRoRr0woJptZ zj7=n$)0XNlE%Y!HZAE%-Y)1!*^H0VX=B-Tx7kX*m8}JCq3V;oo*mU3m4qX|-c@zj`c++v+2vpx4SOe1&p_(>^n1g1dZwb@cjt7IE%c{dvK+a;>XkI#~2_-R2}T20_Yv zmgVI*`qg9nrhLfdc;U1w*{EKrOutRwwczF4u*nKS!MRUaqpT9SzTdVFKNNO7>(Bg6 z>M-U^rf=e6!&GlxF64SRTNUj$`|*PM0di_-vR=BEW!743f1sJ*Q?qQZMvwGelH&t; z$W%1#n^mhBeC@ie?vd0d5FC#5mI>4{8&sv|wb>~}%z|$Px?3VtS+DW--LaeTcRdNc z#r$H;^TWpkmR9;7A6MKMT)d79=#BK1rm#oUTo3O5o=Mo#t1}OLL4AGmE~hZ!%Na4L z$w$zS9r>k)olkjPqXx@&`E2JZybqVy?OYLyBKae~x5Y5D=LfxKwBm>U;x~!(qME-f zjI9te)xI%)w?5XSv_GZKToEa>cgF)&`!L&cxc<&7UZ?(rvh@oK0**a{)=fRN;c5wC zXq5e&I-(7;Q=N4edX8~HnIFZ!m;J8x%fkL}W40Lc^M2+YmjPA<_D$&Pg`C)*r%Mo^ zr|k88VPjXJvX-hGUFKp<^2#>l>BN)sKQ9pjv&(MBzv_Y!^kiL3fy+QgqOQD>leRz2n4! zuRyNK$#c$lQTMo(NvU~h~pRRv|oILWR{XS=q#fKBgZ9RSJWHT%t3FnBs zYhe={bHKEG%&n7l{Dc(*5M0&^{0mOnk@q)5G0Yq3HuBQS2%@-Q6e#k8JmRxqM50B$ zZ1o0}a-_K;gjt?6+L1l~^vSYeAGiwH8;;A_8ixYmv5o;Kcft~?B2Odr7?dO1+w&2J zHhu@DxA!G3uwturi>KKb@j?Z#>%m`CwO@b{e2s9tI`M%WmIM(}!cVW?U#iy~Pa|G{ zK0oSkHnz_aIfZYe695eu^Gw%cLn<0{6q_F_wg{acOm>XEWV*y2w%e%wA7LHe|7Mw9 zPzlkUKUO`)Kp3vZqHgz%GfRt&pO24^n_I;Wi{!m;a$h~OG&9dIM^|W@Vl}Mb&Dz*F zXYR3K%lf)$I0#4*!OqUEKL4-jFCaD(qp+X=s{@;xnF#{{LyXkYS0Z{(TJ$*lQLDkJ zspP}w|1^g!P?j&_od0EE#9m~x;dNr$s;a7ngRuSn>xj6RFxwC-jY~;+jgk-~3*qA8 z>R|s*wMhF*?*EpMT^zpt|Dj)mIBX%~eJy+^2V29Nr3db()3U0iBN!r@Yb{pt4x4Jx zXQ#H4mD6E{QxIR44K;6H6}_9gm7#R^EDyTo3pKH|xeREFce&S3O&^xz3-~(!P!lKa zuzVwTy+yMFripnY{J7#~A!qhi=4i=oN2`!nt;_XCN(oaIe9U*CrIkPoA8n}K} z%(8zKCZU46nF)3;u{Z%dSyd#R|-y6`C8v3c(mS04+?|w`*KHpUOQx>F2xSc*DFuTDf$mx5_!f@+W2GUR}BzWVx zb29%Y7?*VL+HU7HZSGclM6c2Ug~969e@Q+i6xlnE-12;!mXl}wd#7&Pw|_9R4@u&v zGIi+*-?irjEcJT5a5T^xw8;TBVxb$~9p6p)Z6$ zpovCln-hSqCbc-~Yf-NBiupg_zOfW$EEMr`JM7J%Kd0Y`3-^$v92L{9%-G6DW7W-T&-jxL#+(c2r6LC~GRy+c^c`5llCf@)x zdKcytn!n?ahL!4)+Y~9?HfYIPSg6V=$N6*tf&Ywku_Xo_fm}1*+_ip+S#`mc)4WLd z+y1BcK0&VfbF|BM4urz^(M3U_B6%`j!(aA?I?*$j^^SvW-#PFl-aL69pwE~Cdh7HR zsgae%4%-non+)Ds_&z+=%cQA5J=5JgUaeklbP_FXdIIVXqZW7Ft7qipTp9Umu9((P ze{m^C17Ie!x5JoOp7Uo7wF;fmTqDDe20d)-c=ghnBO3pD2lQRqfsOp?^Xr!Enrp0c zsJ%~m25#KGNG;;a5DI~tDBppO+hIZiyN$s0#ZSQQf!uiETB_eHZ{y+3H}MwL9nH@T z3{~6{4tI(l3e_K<+Rhduy7HMIuae$x=wHq@cRs*uMMU^-&5f0=W!Nwr@OhF#&_ZIF z#Rm0tb=J6F3^EX#+7eCmsMAw>gw5&A!w%-)2w)7X&2R48aCw?{1L?w>k*?h9s$~z& z|0Kp@(cI3CiFrOPb_*laqrprtM4b4HnAzUhcmH=n<(pXsbB#r1!QQuQED@E?&TRD~ zk^q;h7;UIa`GRl8-d@zDfQ3JGEpLbSjRPfRDvxZ3KU9bJjlRtxl)c-k?W6}9X~X4s zs`sRo9!710Ny}E<9pTlSZZKcXh81by7`v@;C3CECfr!?dSxj)3bz*| zQ(tjiQ4tmv7XR4c>M{;AGg2A_?xaX7fikXwgH?*@IXFf6FDB;D=Yufq2}I>D?&7CR zjinu50Y=u1A$eQw}LBozj8?p+^9|UfsH&@_Cq@n z6`~D9EW69hkw>sp%k4FF&Gz4lt(3pz?H9aGGHWI0ZoQQScLRpX`iF0P`q2#4=jL^~ zH3cz>;0^Swhr9i=k-a9LSv6%*ATWk;vidp(Q8@(d{a$wk0`;eydPSULHcj-dT8?l0 zY{pOPZ(uwRh|X7VLj?FV7HfVSJ*4E=@Vu=v*03N72@?^qO_X@NzvNQ^pK}N@BFNzr z#ZZh@Wj&6?F3m+{JrTRjJq=a)4bgx5!E)|p#wYR8+|pbMPDFQ@t848KHxoD48f^}q z+=Q{T)tWT)?Gy*>QC0;0b3Z!orcGUFt>lnM@B0F?n@j-Y-aRs!fBy?`WJ*86Gs2qj z_8p&q`Izds9CP-{IL%|pO-X4yhuXt^-e|VP@%Jp`SK(atJKL`tNL|m1bBdENQJ&)@ z2JR1l-1eLM3Z=L9vRAIpTPaK4?T!sC_g4|f2 zys{Mr0#{cLpY&9sLu=mZkQilZEY;TSH=n<&*G%_{=5yvWM8`PH)ir&-T0b7LWKX|K zGW#d_z`D3rIP)oPMhJ9qRD_WS)+SBvZ9Qs;TonWo@=?@zn#SL#ypqaI)4yF!6e%-X zoSVBr|7O~5@f8e6nH*yg`8aH5W*+MVPb{?HW8cUCEA5pNNh=u=;6?mU9vX~guCXpY zdktKz=C1a{hlq1$IS`K^?1}pKPlY}<`9hut5<~Ytd{<{~Sxf2u zR9$dKH>C?4q`>pxj5zUW8~&z`9kMQU<`E=rQ-_Up2sR=0 z`C4#i)$^~9+^*O&?Y)i)`Q(#4g@>(l%Uh~9%Vs_(jGaarlQR9o~yFGTw+^;Xr;p^zd(=aZ5)n+Ok{1eM{tfKi)?3GIv3KifYua$X#t)|9ER z1cb?GK~tNHxo_6{nC57fq9Xo?>NZQ_+GsC_pFlzQqKmE(u$)J+GgV(OVBEIJMiESM zD`4XVgt^9UZ00r3k=N(Z29ZW1KMz$`Nfy6L&;XR9#x9}VA(Uy*#g@+(2^>B`136{hpfe$wt4;{kif4-l#re<~j{`_B5U z&KtM03|C3KDLoo80fL#nU~9cvi`wmMY-Z|=mM()#7^truvq89BZosl zcGs${O|yP*-R-Q|Il`08BeSpisfli#DJe^XO_Y?EE2Xlia3zyyYZX{jzC%^kUGThWw z1lZ)g=Xhq)aqbK!B-@%(j7#|tKt==&3+#zC5O`%-BKjgAQ0s4g95izoX_-JtAGoVSHEx~UB->pm)ALF>JF^4rCi38VjfpY zA@YNkL~W0o<+QZ!O(++vPcW)|GX5}n8F{vQaAO#{@*> z^jWS_B`WA>a7`)F45CFc&>UC?r~+wZncj&YVQNMi7J>W`rnye3?Kd6u;04gpkmU)W z)gzVNs3LjiF{_>4R@Yv!AfeFvuH+3D&m%8z84jx3Rr@yGVX|=Y@OiD6+)%--_sD=j z%h!mG-*pJS63dNz(2I^t7|HGmS{U!b!8!3s68d#)>M*i8$6qmsI45ITv`b+?r$*V9Y;kBbIxa3QHMI!z2CIrdAgW)u z+Sy_L{Sn^qZ8m_Z*)nM;wD>RC^$iF=eXHm1#s5_yuD8c?@^HGR)4lV!+kX=2#D6X= zEx(g{*_Cm~P3OBZL$IG&guf7~60_X*@=Cj9yl9adB`i15fXom`5+-xfw3@d56UwE2 z4K&i(++6{FL3{hLV3a!`T~7L;?9eoQK74gyeRr#+d{L63NyL#)gMb;1XP=jO)WaM5 z`13xb`S$tIURo`dkSb-}F+kBWg~(;P9u^5&+UVcw-drxGuX=Pc2Z`T0N8@0W<+i1& z*x&OaHRYO*)dnkC&&l|ZvaX0vDr>4YmQ$ff)+Z<9^f(RTiaR6pcNTLZvq&aGY*BfZ z_0+^H-^r#j;Di0(c>ICB^U#kxZ-G8j;(@3H0axUf_lp$8Gxw3XY@Xfc7NM)Uw>oxteI)N|2)IZpBqV#le#PKWN;_={zQmvQ?12glaR3Ie zmWjy(t5MAY?2rZyWnn#hL?V;?jdKv=q4sEWhv6>>fG9TH0C0_p7HQd9@&&Ov#tZ1sNYm z3;x2mRxY}&Q~M`Tk_N%7LZSauFqS3>k58u3(o*V=DA6!pRFk8k*x?+`?2q(Gf}$&~ z{2MBy>wtrAa*~697P?^3mHZ#dmWHBr1tRxM2-W8%0zj_GO5(MF@T0q;iJR( z>79UW8LVpbKpR8J|0G61;$WGO|F)p%O0eqK)JT4vRZocS@bqy|S5*m15SWLGH$wAi z)BK0Om+-p9RxW0j2Ij9Pl3+)wKM>V%SPTC?k-`I#w$k|Z$GlrS zmfigR3{52Gjkd{a4S?%)A!4Nu#q`tVx`{#cYk-k0#G;!&zqc+%5k#{#(rj zNiT##U;DUcb1c^d^-l+_QVBO$t0KVE8uX#am-;NEza^&0UsbKU$tLwu{+#r6-#UKs z#@#QvU)R(I2;Yy8;2!Kw?AP5-D|+LygubWl?|b9HOF?7G{kJAZ`gMhF3A{i`0Pn#( z-m9}^H6ZZbtua4hos;TQMYEkB-oI!4$^y;R)($~ojc4cr7p_e;JQJUO?9bI?KY}?t zkK$3r4QaCtA`)OW%} zqR(@3Y&mCMZEGduAF)J=!VjaP){Q&c^u$8BN)kZb(V!c_i0AW%0Y}y0Y*c!8lpp{K zW!rw}!HA3MI(L%7#|CZ41d6arO0tJ>wN)MfF3^oYw|TtCTiKW3lnNU6qJV>j)J|bG zm%8tRG1%sno%L4ISxp5gkH*Eo(ZXxhUANL`POccPY@>EFM5zy;5on(hisaU!fd)ZIwyxS+|ktv8vH48eW9_#8}RTb$K7A1g{y#dVMys)l~E650WP*dE<#gh6Vfw}xy&1!$4DX#rjzS`9uqXhsE=Z7r&{Ve zt{R1fq0#E`>HFFu;@qTW(ZZ@-51G%w;$k8#V$6mUvhXHl{o;%NxW_aoV2mar5Et>h zrFYaoq6ZFpwwocx*~cC7fKky+d+jmX=i|y_AGt~Q05z`36Iqkvej`++XHwe<#|sXQ z_d*SCCZ{AE4lmq)P+}{(v%3qnuiCpUu^Q3VJCWUy%4cQVioV%?w9NADCy>T&-5j;#QP12>Y#?d`TP^FvR- z5-S6vfABq1w}T z(mJGZ$(ymgXI0zQ)~gvJ=LGSjdxd}MW`4g`x#7DQ%3wvg+p)_Qo&&bk2nTrEjOYK!Xr{vl6`!q zJAPzFpzi{Co{K4D&p;EMuS)vP^rHZh5yEQZ#l`KZP&sY%a! zVjk4Y360I7@*OfEYiEHr^wlS5JXn`JOVTOfQg<}YIZF+^fo#wrk@*h=KmgF-?t&!! zJQd6-TY=HVDdgQ@pc53JCENtXQirWq%#dy-y2&ZBS*5T(_);>lZe@NnLB&AD0NPy* zm0S-4%x9E|kHKQ2!SY^S?pYu+Ewi!qS~J+rY=Mm!M7gFc?|LuamubjT8^yrj#ki2# zrCov|MvQrRGv()epYWWFNdJUzqScgN|0Mwy6R zNB7HLW6s3F4r>;nP$PtoLp*8TCRj4X;`TxsMMeqx0*-$#ZgkW~&hQk(kQz-Lovrf3 zm-e{xlKpfx{G8KRM|D6rgW;tfM+#9SViGU zhTQHt8UFPYrtDe~{{0kQ)y7C;RCV&BujhKV3u*E!gJrg@==lreyn#|o(hCWAecc$| zVyZ#9+SeKi!&Oox$UU^Z;tEUc(=y0>aksroS;gD4#WT~@&_R(ODs+^(NRG{=?tw|c z_=L2ZO+hQmTX5t#O$yd@vDOf`sGy|pE5gxJlG z_p2a;`?-` zi@9=cz|xy=%Zp(LUHG@_D7BN5nGjDmFXrYpG+Nr@F?wFjdGT_iYT(ic04;x#_=LC2 zf>%(oshF3}c*gy8hpb?6(Hd$HiiWrbW4RZOu8?9;sx<5@}f_*RK?l}>!daU2X zFEDT6N=&+g24uI)Y|*~8s&lza(M;OB8bx2;`k=e|-YuxFHtL|LA5K zP)?qx=)I%eY4qbPaQh-^9`#x;UO(N%)Fo}yVc;>kJ_7#+D#to1fx5zOq4ksBU)a{o zwAL(ff2y8U>UqJ<=G>0gyMjR+Ic+;?TkiWVsLJ7*rKrr^5gfbsq~pt+WFN*i@Ljsn z+>`Aq6j(F1t#LkdcFZOT!d7?O(bya?V>;4ZmvHRz#A?KD77vF@auNkp|H>}+gai!2 zgycYQ`#-(zDvaGLvNf%I;9t_mB!ye}oPS{DpRY3P9*E@m>-jzu5o$Cyl7btzgD8#} zc--;@h^0ryX_#hKG;ToIraaphV5Z??o_{CY%XB>lw%h0*X~4Va`J_)Z$aFG!))r59 ze9-YPJB#sp@j&W!Bwp@I!B5w9VneWkS~;9n5qx@EekNG*zd5npjek4*|Ka(UcmAXF f|Kk4=1a%CSKOogOK4u_v>NOn={U@dBuipI^D-N;^ literal 0 HcmV?d00001 diff --git a/doc/manual/en/images/create_wiki_or_blog_step_two.png b/doc/manual/en/images/create_wiki_or_blog_step_two.png new file mode 100644 index 0000000000000000000000000000000000000000..881747e9b8df416cb16f218658b0c0a09ea79a12 GIT binary patch literal 26757 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 literal 0 HcmV?d00001 diff --git a/doc/manual/en/images/ikiwiki_create.png b/doc/manual/en/images/ikiwiki_create.png deleted file mode 100644 index 76c3b771f59058b0d1dd60b3fa64d5b79252fc96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19230 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 N<0i*&M=t#N{{R&da=icm diff --git a/doc/manual/en/images/ikiwiki_manage.png b/doc/manual/en/images/ikiwiki_manage.png deleted file mode 100644 index 56e5f616f5866595ca5758fe3a4b7e7c03a119ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6032 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 - -<> - -## BEGIN_INCLUDE - -== MLDonkey (Compartir archivos entre pares) == -|| {{attachment:FreedomBox/Manual/MLDonkey/MLDonkey-icon_en_V01.png|icono de MLDonkey}} || - -'''Disponible desde:''' versión 0.48.0, pero ya no está disponible ni en Bullseye (estable) ni en Bookworm (en pruebas). -=== ¿Qué es MLDonkey? === - -''MLDonkey'' es una aplicación libre y multiprotocolo para compartir archivos entre pares (P2P) que ejecuta un servidor ''back-end'' sobre muchas plataformas. Se puede controlar mediante algún interfaz ''front-end'', ya sea web, telnet o cualquier otro de entre una docena de programas cliente nativos. - -Originalmente era un cliente Linux para el protocolo eDonkey pero ahora se ejecuta en multiples sabores de Unix y derivados, OS X, Microsoft Windows y MorphOS. Y soporta muchos protocolos P2P, incluyendo ED2K (y Kademlia sobre Overnet), !BitTorrent, DC++ y más. - -Más información acerca de MLDonkey en [[http://mldonkey.sourceforge.net/Main_Page|el Wiki del Proyecto MLDonkey]] - -=== Captura de Pantalla === - -{{attachment:mldonkey.jpg|MLDonkey Web Interface|width=800}} - -=== Usar el Interfaz Web MLDonkey === - -Tras instalar MLDonkey su interfaz web está accesible a los usuarios de los grupos ''ed2k'' y ''admin'' en {{{https:///mldonkey}}}. - -=== Usar el Interfaz para Escritorio/Móvil === - -Se pueden usar muchas [[http://mldonkey.sourceforge.net/Gui|aplicaciones de escritorio y móviles]] para controlar a MLDonkey. El servidor MLDonkey estará ejecutándose siempre en la !FreedomBox y (cargará o) descargará archivos y los mantendrá almacenados incluso cuando tu máquina local esté apagada o desconectada del MLDonkey de !FreedomBox. Por restricciones de acceso via SSH a la !FreedomBox solo los usuarios del grupo ''admin'' pueden acceder a su MLDonkey. - - 1. Crea un usuario nuevo en el grupo admin o usa uno que ya esté allí. - - 1. En tu máquina de escritorio abre una terminal y ejecuta el siguiente comando. Para este paso se recomienda que configures y uses claves SSH en vez de contraseñas. - {{{ -$ ssh -L 4001:localhost:4001 -N usuario_de_ejemplo@ejemplo.freedombox.mola - }}} - 1. Arranca la aplicación gráfica y conéctala a MLDonkey como si MLDonkey se estuviera ejecutando en la máquina local de escritorio. Cuando hayas terminado mata el proceso SSH pulsando Control-C. - -Para más información lee acerca de los [[http://mldonkey.sourceforge.net/SshTunnel|túneles SSH]] en la documentación MLDonkey. - - -=== Enlaces externos === - - * Sitio web: http://mldonkey.sourceforge.net/Main_Page - - -## END_INCLUDE - -Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. - -<> - ----- -CategoryFreedomBox diff --git a/doc/manual/es/Manual.raw.wiki b/doc/manual/es/Manual.raw.wiki index 86d2f3512..1ec9d42b2 100644 --- a/doc/manual/es/Manual.raw.wiki +++ b/doc/manual/es/Manual.raw.wiki @@ -30,7 +30,6 @@ <> <> <> -<> <> <> <> @@ -97,6 +96,8 @@ <> <> += Release Notes = + <> = Contributing = diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki index 5e4ad0b42..c333e573b 100644 --- a/doc/manual/es/ReleaseNotes.raw.wiki +++ b/doc/manual/es/ReleaseNotes.raw.wiki @@ -6,10 +6,36 @@ For more technical details, see the [[https://salsa.debian.org/freedombox-team/f ## BEGIN_INCLUDE -= Release Notes = - The following are the release notes for each !FreedomBox version. +== FreedomBox 22.4 (2022-01-31) == + +=== Highlights === + + * coturn: Use wildcard listening address to fix startup issues + * sso, users: Redirect to home page after logout + +=== Other Changes === + + * apache: Don't redirect to HTTPS for .onion domains + * apache: Don't set HSTS for .onion domain + * cockpit: Explicitly redirect to HTTPS as needed for !WebSockets + * doc: Fail when downloading images from Debian wiki fails + * email_server: Drop showing diagnostics/repair and roundcube config + * email_server: Drop some unused code + * locale: Update translations for Bulgarian, Dutch, French, German, Hungarian, Russian, Swedish, Ukrainian + * matrixsynapse: Add !FluffyChat to client list + * mldonkey: Drop app not available in Debian Bullseye and Bookworm + * power: Add a link to power app in the system menu + * roundcube: Add setting for local connection only + * shaarli: Add android app to description + * shaarli: Add backup component + * shaarli: Add functional tests + * snapshots: Clarify that snapshots are take during updates too + * tests: functional: Implement a workaround for issue with screenshots + * users: Clarify help message for authorization password + * wireguard: tests: Add functional tests + == FreedomBox 22.3 (2022-01-17) == === Highlights === diff --git a/doc/manual/es/Sharing.raw.wiki b/doc/manual/es/Sharing.raw.wiki index 0b9a05f4c..64edde0e4 100644 --- a/doc/manual/es/Sharing.raw.wiki +++ b/doc/manual/es/Sharing.raw.wiki @@ -37,7 +37,7 @@ No hay que ser administrador para provisionar el contenido. Cualquier usuario co Varias comparticiones podrían apuntar al mismo contenido. -Si eres usuario de !FreedomBox y tu administrador se niega a crearte comparticiones, y no necesitas restringir el acceso a tu contenido, todavía puedes recurrir al mecanismo de [[es/FreedomBox/Manual/Apache_userdir|Sitios web de Usuario]] o a las redes entre pares (P2P) ([[es/FreedomBox/Manual/Deluge|Deluge]] o [[es/FreedomBox/Manual/Transmission|Transmission]] para Torrent, o [[es/FreedomBox/Manual/MLDonkey|MLDonkey]]) para publicar tus archivos. +Si eres usuario de !FreedomBox y tu administrador se niega a crearte comparticiones, y no necesitas restringir el acceso a tu contenido, todavía puedes recurrir al mecanismo de [[es/FreedomBox/Manual/Apache_userdir|Sitios web de Usuario]] o a las redes entre pares (P2P) ([[es/FreedomBox/Manual/Deluge|Deluge]] o [[es/FreedomBox/Manual/Transmission|Transmission]] para Torrent) para publicar tus archivos. === Tecnicismos === ''Sharing'' compartirá el contenido usando el servidor web Apache que viene de serie. diff --git a/doc/manual/es/freedombox-manual.raw.wiki b/doc/manual/es/freedombox-manual.raw.wiki index 53700ce78..15cf33344 100644 --- a/doc/manual/es/freedombox-manual.raw.wiki +++ b/doc/manual/es/freedombox-manual.raw.wiki @@ -29,7 +29,6 @@ <> <> <> -<> <> <> <> @@ -96,6 +95,8 @@ <> <> += Release Notes = + <> = Contribuir = diff --git a/doc/manual/es/images/MLDonkey-icon_en_V01.png b/doc/manual/es/images/MLDonkey-icon_en_V01.png deleted file mode 100644 index 0d2a7724579db3d6990ad8c968d245775cd9d8bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41437 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 AwEzGB diff --git a/doc/manual/es/images/create_wiki_or_blog.png b/doc/manual/es/images/create_wiki_or_blog.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6c50083822963f78fcacbf2aa5c87c9a9f0e33 GIT binary patch literal 22660 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 literal 0 HcmV?d00001 diff --git a/doc/manual/es/images/create_wiki_or_blog_step_two.png b/doc/manual/es/images/create_wiki_or_blog_step_two.png new file mode 100644 index 0000000000000000000000000000000000000000..881747e9b8df416cb16f218658b0c0a09ea79a12 GIT binary patch literal 26757 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 literal 0 HcmV?d00001 diff --git a/doc/manual/es/images/ikiwiki_create.png b/doc/manual/es/images/ikiwiki_create.png deleted file mode 100644 index 76c3b771f59058b0d1dd60b3fa64d5b79252fc96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19230 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 N<0i*&M=t#N{{R&da=icm diff --git a/doc/manual/es/images/ikiwiki_manage.png b/doc/manual/es/images/ikiwiki_manage.png deleted file mode 100644 index 56e5f616f5866595ca5758fe3a4b7e7c03a119ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6032 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 Date: Mon, 31 Jan 2022 20:05:31 -0500 Subject: [PATCH 35/35] Release v22.4 to unstable Signed-off-by: James Valleroy --- debian/changelog | 56 ++++++++++++++++++++++++++++++++++++++++++++++ plinth/__init__.py | 2 +- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index c22a4281c..dea8d3f06 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,59 @@ +freedombox (22.4) unstable; urgency=medium + + [ ikmaak ] + * Translated using Weblate (German) + * Translated using Weblate (Dutch) + + [ Benedek Nagy ] + * shaarli: Add android app to description + * apache: Don't redirect to HTTPS for .onion domains + * matrixsynapse: Add FluffyChat to client list + * power: Add a link to power app in the system menu + * Translated using Weblate (Hungarian) + + [ Sunil Mohan Adapa ] + * mldonkey: Drop app not available in Debian Bullseye and Bookworm + * tests: functional: Implement a workaround for issue with screenshots + * wordpress: tests: functional: Add missing marks on tests + * tests: functional: Set default screenshots dir as ./screenshots + * doc: Fail when downloading images from Debian wiki fails + * cockpit: Explicitly redirect to HTTPS as needed for WebSockets + * apache: Don't set HSTS for .onion domain + * wireguard: tests: Add functional tests + * snapshots: Clarify that snapshots are take during updates too + * coturn: Use wildcard listening address to fix startup issues + * sso, users: Redirect to home page after logout + * users: Clarify help message for authorization password + * HACKING: Stop using setup.py as a way to run tests + * email_server: Drop some unused code + * roundcube: Add setting for local connection only + * email_server: Drop showing diagnostics/repair and roundcube config + + [ James Valleroy ] + * .gitignore: Add screenshots/ + * shaarli: Add backup component + * shaarli: Add functional test + * shaarli: Test adding a bookmark + * locale: Update translation strings + * doc: Fetch latest manual + + [ Coucouf ] + * Translated using Weblate (French) + + [ 109247019824 ] + * Translated using Weblate (Bulgarian) + + [ Michael Breidenbach ] + * Translated using Weblate (Swedish) + + [ Nikita Epifanov ] + * Translated using Weblate (Russian) + + [ Andrij Mizyk ] + * Translated using Weblate (Ukrainian) + + -- James Valleroy Mon, 31 Jan 2022 20:04:57 -0500 + freedombox (22.3) unstable; urgency=medium [ nautilusx ] diff --git a/plinth/__init__.py b/plinth/__init__.py index 24b808a96..fc2011a64 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -3,4 +3,4 @@ Package init file. """ -__version__ = '22.3' +__version__ = '22.4'
{% trans "Data transmitted:" %} {{ peer.status.transfer_tx|filesizeformat }}
{% trans "Data received:" %} {{ peer.status.transfer_rx|filesizeformat }}
{% trans "Latest handshake:" %} {{ peer.status.latest_handshake|default:'' }}